Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找集合中第一次出现的项并对其进行更新的最佳方法是什么_Javascript_Arrays_Algorithm_Typescript - Fatal编程技术网

Javascript 查找集合中第一次出现的项并对其进行更新的最佳方法是什么

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} .... ]; 我需要编

我有一个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}
....
];
我需要编写一个函数,每次调用它时,它都会识别第一次出现的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