循环并检查两个数组总是只返回一个元素

米格尔·弗里亚斯

我有两个数组,一个是字符串数组,另一个是['security', 'hobbies']对象数组[{name: 'randome', category: 'hobbies'}, {name: 'randome', category: 'randome'}, {name: 'randome', category: 'randome'}, {name: 'randome', category: 'security'}],我试图循环这两个数组和splice所有那些与第一个数组上的类别不匹配但总是只得到的对象循环中的一个元素。

for (let i = 0; i < searchparam.category.length; i++) {
        for (let j = 0; j < validapps.length; j++) {
          let match: boolean = false;
          if (validapps[j].category === searchparam.category[i]) {
            console.log(validapps[j])
            match = true;
            return;
          }
          if (!match) {
            validapps.splice(j, 1);
            j--;
          }
        }
 }

循环后我应该得到 2 个或更多元素,但总是只得到一个。结果数据总是一个元素。

_id: "598c69259fe2ff5fd0432396"
active: true
app_language: Array [ "DE" ]
application_code: "ASF"
blacklist: Array []
category: "utilities"
comments: ""
contacts: Array [ "598c40cf0f05ba5d0c5da01a", "598c66d59fe2ff5fd043238a", "59ce05683d7daf37702c1fc1", … ]
id: "598c69259fe2ff5fd0432396"
image: ""
insertDate: "2017-08-10T14:09:41.189Z"
name: "Alpha SSD Fresh"
os: Array [ {…} ]
updateDate: "2017-08-10T14:09:41.608Z"
gurvinder372

或者你可以使用 filter

var arr = [{name: 'randome', category: 'hobbies'}, {name: 'randome', category: 'randome'}, {name: 'randome', category: 'randome'}, {name: 'randome', category: 'security'}];
var validItems = ['security', 'hobbies'];
arr = arr.filter( s => validItems.indexOf( s.category ) != -1 ); //only those items will be passed through which have valid categories

或者

arr = arr.filter( s => validItems.includes( s.category ) ); //only those items will be passed through which have valid categories

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有两个数组的方法。如果第一个数组中的值返回不为null,则必须将另一个数组中的相应元素用作第二个方法的参数

压缩两个数组,总是第一个数组的3个元素,然后第二个数组的2个元素

在一个单独的数组中显示两个数组的相同元素

为什么getElementsByTagName()总是返回一个数组?

PHP Laravel检查两个数组是否具有匹配的键值,如果是,则从数组1中获取一个元素并插入数组2中

比较两个数组中的元素,并使用python当一个值大于另一个时返回True

如何在一个数组中交换两个元素?

当在Javascript中重复两个元素时,如何循环创建另一个数组?

使用jQuery“ extend”连接两个数组将返回一个数组

嘶嘶声只返回一个元素,而选择器匹配两个

我的循环只检查第一个数组项

在一个数组列表中找到两个网络元素

比较两个数组并返回一个数组以显示哪些元素相等或不相等

检查php中两个或多个数组中是否存在一个值

检查一个值是否存在于两个或多个数组中

将 3 个不同数组的所有值转换为它们的绝对值并返回所有 3 个值的方法只保留第一个数组而不是接下来的两个数组

嵌套循环:最后一个循环总是返回最后一个数组对象

使用两个数组中的公共元素创建一个新数组

将两个数组匹配为一个数组。不通过 for 循环

php - 如何将最后两个数组元素合并为一个数组元素

检查数组值是否在另一个数组的两个值之间

如何匹配/配对两个数组元素并在 PHP 中只返回一个

删除重复元素并从两个数组中取出一个元素

从两个数组的乘积创建一个数组元素

将一个数组的元素与其他两个数组的元素进行比较,迅速

一个 foreach 循环和两个数组

通过第一个数组的元素连接两个 numpy 数组

如何比较两个数组的大小并返回一个更大的数组(不是值或大小)?

返回一个数组的函数,该数组是其他两个数组的交集