对于内部获取未定义

Car*_*tin 2 javascript for-loop

我有这个JSON数据:

var lists = [{
        "listId": 1,
        "permission": "WRITE"
    }, {
        "listId": 2,
        "permission": "WRITE"
    }, {
        "listId": 2,
        "permission": "READ"
    }, {
        "listId": 3,
        "permission": "READ"
    }, {
        "listId": 3,
        "permission": "WRITE"
    }, {
        "listId": 5,
        "permission": "WRITE"
    }]
Run Code Online (Sandbox Code Playgroud)

还有这个:

var arr = [{
    "listId": 1,
    "confidentiality": "PUBLIC",
    "listName": "List name here..1",
    "permission": "WRITE"
}, {
    "listId": 2,
    "confidentiality": "PUBLIC",
    "listName": "List name here..2",
    "permission": "READ"
}, {
    "listId": 3,
    "confidentiality": "CONFIDENTIAL",
    "listName": "List name here..3",
    "permission": "WRITE"
}, {
    "listId": 4,
    "confidentiality": "CONFIDENTIAL",
    "listName": "List name here..4",
    "permission": "WRITE"
}, {
    "listId": 5,
    "confidentiality": "CONFIDENTIAL",
    "listName": "List name here..5",
    "permission": "WRITE"
}]
Run Code Online (Sandbox Code Playgroud)

有了这个和嵌套,我必须从arr过滤数据并将其推送到结果[]如果匹配listId列表中的权限 [...]

var result = [];

for(var i = 0; i < arr.length; i++) {   
  for(var j = 0; j < lists.length; j++) {     
     if( (arr[j].listId == lists[i].listId) && (arr[j].permission == lists[i].permission) ) {
        result.push(arr[j]);
     }
  }
}
console.log(result);
Run Code Online (Sandbox Code Playgroud)

问题是如果arr.length小于lists.length,我得到listId undefined

知道怎么解决这个问题?

gur*_*372 5

问题是如果arr.length小于lists.length,我得到listId undefined

您需要为各自的数组使用相应的索引,即ifor arrjforlists

if( (arr[i].listId == lists[j].listId) && (arr[i].permission == lists[j].permission) )
Run Code Online (Sandbox Code Playgroud)