繁体   English   中英

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

[英]Loop and check two array always return only one element

我有两个数组,一个数组是字符串['security', 'hobbies'] [{name: 'randome', category: 'hobbies'}, {name: 'randome', category: 'randome'}, {name: 'randome', category: 'randome'}, {name: 'randome', category: 'security'}] ['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"

或者您可以使用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

暂无
暂无

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

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