繁体   English   中英

javascript - 在对象数组中搜索字符串并返回数组

javascript - search for string in array of objects and return array

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想编写一个 function 它将在数组中的对象字段中搜索特定字符串,如果在任何对象的字段中找到该字符串,则将此 object 添加到新数组中。 我已经让我的 function 工作,但是遇到了包含多个对象副本的新列表的问题,其中包含正在搜索的字符串的多个副本。 我知道这是因为我对它进行了循环,以便它在其中找到字符串的每个字段,它将 object 再次添加到新数组中。 但是,我不确定我可以用什么替代方法 go 关于编写 function 以添加 object 仅一次,无论其字段有多少匹配。 这是我的 function:

function search (keyword, array){
    var newArray = [];
    for(let i = 0; i < array.length; i++) {
        for (key in array[i]) {
            if(array[i][key].includes(keyword)){
                newArray.push(array[i]);
            }
        }
    }
    return newArray;
}

output 有问题的一个例子是,如果我这样做:

console.log(search('yes', myArray))

如果 myArray 包含一个 object,其中“是”出现在 3 个不同的字段中,它会将这个 object 添加到 newArray 3 次。

2 个回复

您可以使用Set ,这将防止重复。

function search (keyword, array){
    var result = new Set();
    for(let i = 0; i < array.length; i++) {
        for (key in array[i]) {
            if(array[i][key].includes(keyword)){
                result.add(array[i]);
            }
        }
    }
    return Array.from(result);
}

Danny Buonocore 代码的改进版本。

  • 没有意外的全局变量。
  • 使用forEach遍历数组。
  • Uses for...of and Object.values() to iterate over the values of the object (using for..in iterates over all non-Symbol, enumerable properties of an object itself and those the object inherits from its constructor's prototype and are导致许多错误)
  • “短路”添加 object 的测试:如果一个值匹配,则无需检查其他值。 仅此一项可能就可以解决您的问题,但是如果您的阵列中有多次相同的 object ,则使用set可以防止重复。

 function search (keyword, array){ var result = new Set(); array.forEach( object => { for (const value of Object.values(object)) { if ( value.includes(keyword) ) { result.add(object); continue; // Don't need to check more on this item. } } }); return Array.from(result); } console.log(search("yes", [ { key1:"yes", key2:"yes" }, { key1:"no", key2:"no" } ]));

2 JavaScript 字符串搜索对象数组

我需要为一个表实现一个搜索功能。 我得到了一组具有不必要的对象属性的对象。 我需要映射数组以获得必要的属性,然后进行过滤。 这是我的代码。 const items = [ { name: 'pathum', id: 1, status: true, createdAt ...

3 部分字符串搜索javascript对象的指针

使用以下 我想执行搜索,以便通过搜索“ elv”或“ Elv”来找到猫王(因此,不区分大小写的搜索)。 结果应该以阵列形式返回,这样就可以从我的搜索中返回一根以上的针。 我的解决方案是将我的指针转换为小写字母,没有空格,并使用for循环遍历我的干草堆,以检查小写字母/无空格的名称 ...

4 在javascript中搜索对象数组

我有以下数组,我正在尝试其中的一个特定元素的搜索: 谁能提供有关如何在此数组中定位元素的建议? 我已经尝试过类似的方法,但是我似乎无法弄清楚是否正确地进行了操作。 任何建议都很好。 ...

5 搜索对象的Javascript数组

我正在尝试通过字符串过滤javascript对象数组。 但是我希望过滤器查看每个属性并对其进行测试,以查看字符串是否有效。 AngularJS有一个内置的过滤器可以做到这一点,但是我在SO上找不到任何解决方案。 因此,例如,如果我为文本字符串输入“ Jo”,它将带回索引0处的对象,如 ...

6 在对象数组中搜索字符串

我正在应用程序中使用产品搜索引擎。 我有以下代码: 和对象: 在TextField中输入文本后,将调用该函数: 我有以下错误: productsTmpObjectArray = productsTmpObjectArray.filter({($ 0.lan ...

2018-07-04 12:07:55 2 76   ios/ swift
7 javascript-返回带有唯一子项的父项,该子项与具有嵌套对象的对象数组中的给定搜索字符串匹配

这是我先前提出的问题的跟进问题 。 从收到的答案中,我可以在一组对象的嵌套对象中进行搜索。 请以这个小提琴为例 。 在这里,当我搜索字符串'emc'时,该函数返回两个正确的对象。 但是作为“制造商”的“ emc”在子对象中。 并且每个子对象都不满足此条件。 我正在寻找的结果 ...

9 在数组中搜索字符串并返回那些对象的好方法

因此,我一直在使用此来宾列表前端应用程序完成工作。 我想做的最后一件事是允许传递字符串以按名称过滤列表。 因此,通过订阅用户在字段中输入一些名称,我应该能够使用此ko计算函数以这种不同方式搜索数组。 请记住,self.guests是访客对象的数组。 您可以看到,通常使用列表的切片部 ...

10 搜索对象数组并返回新的对象数组

我需要一些帮助。 我一直在试图解决这个问题,但我不能,所以我想要做的是我试图将对象数组 blackListUser 与 contactUsers 进行比较。 如果有匹配,我想返回新用户的白名单,而不是最后一个预期的新数组的后备用户。 ...

2020-03-22 21:10:18 1 32   php
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM