Javascript 查找集合中第一次出现的项并对其进行更新的最佳方法是什么
我有一个Javascript/Typescript的集合Javascript 查找集合中第一次出现的项并对其进行更新的最佳方法是什么,javascript,arrays,algorithm,typescript,Javascript,Arrays,Algorithm,Typescript,我有一个Javascript/Typescript的集合 [ {"order":1,"step":"abc:","status":true}, {"order":2,"step":"xyz","status":true}, {"order":3,"step":"dec","status":false}, {"order":4,"step":"pqr","status":false}, {"order":5,"step":"tuv","status":false} .... ]; 我需要编
[
{"order":1,"step":"abc:","status":true},
{"order":2,"step":"xyz","status":true},
{"order":3,"step":"dec","status":false},
{"order":4,"step":"pqr","status":false},
{"order":5,"step":"tuv","status":false}
....
];
我需要编写一个函数,每次调用它时,它都会识别第一次出现的false(上例中的顺序:3),并将其更新为true。如果现在再次调用上述方法,则下一个元素(顺序:4)将被更新。假步骤将始终低于已完成的步骤,即真步骤
编写此函数的最佳方法是什么(最简单、代码少且优雅)?我可以手动循环使用集合中的每个项,检查是否首次出现false,然后更新它 当您查找所需的匹配事件时,请插入“break”语句以停止搜索 例如:
for( var i=0; i<recs.length; i++ ) {
if ( recs[i]['status'] == false ) {
recs[i]['status'] = true;
break;
}
}
for(var i=0;i您所描述的基本上是您将如何做:
for (let order of orders) {
if (!order.status) {
order.status = true;
break;
}
}
在ES6中,您可以使用:
yourArray.find((element) => !element.status).status = true;
请参阅及其兼容性表
请注意,如果没有状态为“false”的条目,则此操作将失败。例如,一个快速而肮脏的修复程序可能与下面的类似。但这完全取决于您的用例
(yourArray.find((element) => !element.status) || {}).status = true;
您可以使用Lodash find方法查找第一次出现的错误状态
示例代码
_.find(users, function(object) { return object.status === false });
用于循环
。如果条件
。中断
如果条件被评估为真
。。!o.status)[0]| |{}.status=true;
感谢您的写作。是否有一个较短的ES6版本使用数组映射来进一步简化它?谢谢!!它使用了几个ES6组件,如for..of
。此外,我不同意为了它而写一些尽可能最短最复杂的东西。是否有一个较短的ES6版本使用数组映射更简单一点?谢谢!!您还没有指定运行此操作的平台或环境。使用上面的方法在所有浏览器中都绝对有效。因为没有使用元素而获得my+1。status==false