2016-11-08 76 views
-1

數組中存在數組列表我有以下陣列檢查對象

var data = ["004", "456", "333", "555"]; 

我也有對象的一個​​這樣的數組。

Object {Results:Array[2]} 
Results:Array[2] 
    [0-1] 
     0:Object 
      id="004"  
      name: "Rick" 
      Active: "false" 
     1:Object 
      id="005"  
      name:'david' 
      Active: "false" 

正如你所看到的,ID與004包含數組以及對象。我想檢查數組'data'中有多少元素存在於對象'Results'中。

最終的結果應該是

data = ["004"]; 

任何人都可以讓我知道如何尋找這個

回答

1

沒有underscore.js

var data = ["004", "456", "333", "555"]; 
 
arr = [{ 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
}, { 
 
    id: "005", 
 
    name: 'david', 
 
    Active: "false" 
 
}]; 
 

 
out = []; 
 
for (var i = 0; i < arr.length; i++) { 
 
    for (var j = 0; j < data.length; j++) { 
 
    if (arr[i].id === data[j]) 
 
     out.push(data[j]); 
 
    } 
 
} 
 
console.log(out);

隨着underscore.js

var data = ["004", "456", "333", "555"]; 
 
arr = [{ 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
}, { 
 
    id: "005", 
 
    name: 'david', 
 
    Active: "false" 
 
}]; 
 

 
out = []; 
 

 
_.each(arr, function(value1, key1, obj1) { 
 
    _.each(data, function(value, key, obj) { 
 
    if (value1.id == value) out.push(value); 
 
    }); 
 
}); 
 

 
console.log(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://underscorejs.org/underscore-min.js"></script>

+0

@ Mahi-你也可以讓我知道我將不得不做出什麼樣的改變,如果我想在'arr'中的'數據'的無與倫比的元素 –

+0

你只想在ARR ID? – Mahi

+0

@ Mahi-如上所示,004將是輸出,因爲這是'arr'中唯一的值。我希望輸出是['456','333','555'],表明這些值不存在於'arr'中。任何想法如何實現這一目標? –

0

我想下面的代碼(未測試)

l_return = []; 
for (l_cnt = 0; l_cnt < Results.length - 1; l_cnt++) { 
    if (data.indexof(Result[l_cnt].id) != -1) l_return.push(Result[l_cnt].id) 
} 
data = l_return 
+0

不要忘記使用'var'除非你真的想全局。 –

0

這應該給你你在找什麼。

var data = ["004", "456", "333", "555"]; 
 
var results = [ 
 
    { 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
    },{ 
 
    id: "005", 
 
    name: "david", 
 
    Active: "false" 
 
    } 
 
]; 
 

 

 
var found = []; 
 
results.forEach(i => { 
 
    if(data.includes(i.id)){ 
 
    if(!found.includes(i.id)) found.push(i.id); 
 
    } 
 
}); 
 

 
console.log(found) // ["004"]