在下一个操作之前完成for循环的方法

时间:2021-01-12 14:32:56

标签: javascript node.js arrays for-loop

我有一大堆从我的 rest api 中获得的对象,我想从其中一个元素中搜索一个值。 我设法想出了一种搜索单词的方法,但它适用于几个单词而不是全部。当我试图找出问题时,我意识到 for 循环不会遍历整个数组。 下面是我的代码

function search(nameKey, myArray) {
    var lowercased_array = [];
    //lowercase the search value
    var lowercased_nameKey = nameKey.toLowerCase()
    //lowercase the searched array
    for (var i = 0; i < myArray.length; i++) {
        myArray[i].name = myArray[i].name.toLowerCase()
        lowercased_array.push(myArray[i])
    }

    var new_array = [];
    for (var i = 0; i < lowercased_array.length; i++) {
        if ((lowercased_array[i].name).includes(lowercased_nameKey)) {
            new_array.push(lowercased_array[i])
        }
    }
    return new_array
}

我首先将搜索词转为小写,我的第一个 for 循环是将数组对象中名称元素的值转为小写,以便进行搜索。 第二个 for 循环是检查数组中对象的 name 元素中是否存在搜索值,如果为真,则将整个对象推送到新数组中。 在返回带有搜索结果的新数组之前,我正在寻求有关如何确保该过程完成的帮助。

提前致谢

2 个答案:

答案 0 :(得分:0)

通常,您可以简化代码。 如果你使用过滤器,你可以这样做。

function search(nameKey, myArray) {
    
    var lowercased_nameKey = nameKey.toLowerCase()

    var new_array = myArray.filter(item => item.name.toLowerCase().includes(lowercased_nameKey))
   
    return new_array
}

答案 1 :(得分:0)

不清楚您为什么要创建 lowercased_array,因为您已经在提供的数组中设置了小写值。话虽如此,您的函数可能会使用 filter:

function search(nameKey, myArray) {
  const lowercased_nameKey = nameKey.toLowerCase();
  return myArray.filter(item => item.name.toLowerCase().includes(lowercased_nameKey));
}
相关问题