2017-08-06 57 views
-5

我有一個對象的數組中存在的ID,如:如何檢查是否IDS的JavaScript

item: { 
    b: null 
    c: "asd" 
    i: 10 
    q: 10 
    s: Array [237,241]} 

我也有一組ID:

var ids = [237, 238, 239, 240, 242, 243...] 

我不知道如何檢查s中的存在上述的ID,然後 保存這些項新的數組或對象

 for (var key in items) { 
      for (var i in items[key].s) { 
     //... 
      } 
     } 
+2

使用'indexOf'或'includes'的 –

+1

可能重複[我怎樣檢查是否一個數組包含在JavaScript對象?(https://stackoverflow.com/questions/ 237104/how-do-i-check-if-an-array-includes-an-object-in-javascript) – Nisarg

+0

@nisarg ii沒有看到一個對象:/ –

回答

1
if(items.s.some(el=>ids.includes(el))) alert("wohoo"); 

只需檢查某些項目id是否包含在ids數組中。或者用一個for循環:

for(var i = 0; i < items.s.length; i++){ 
if(ids.includes(items.s[i])){ 
    alert("wohoo"); 
} 
} 
0

您可以使用Array.filterArray.indexOf。我假設你沒有使用任何代碼轉換器,我建議使用indexOf而不是includes,因爲它具有更好的瀏覽器支持。

var foundIds = item.s.filter(x => ids.indexOf(x) !== -1); 
// foundIds now contains the list of IDs that were matched in both `ids` and `item.s` 

var item = { 
 
    b: null, 
 
    c: "asd", 
 
    i: 10, 
 
    q: 10, 
 
    s: [237,241] 
 
} 
 
var ids = [237, 238, 239, 240, 242, 243]; 
 

 
var foundIds = item.s.filter(x => ids.indexOf(x) !== -1); 
 
console.log(foundIds);

+0

因爲它沒有得到很好的支持,所以你不要使用'.includes()',但是隨後使用箭頭函數。你不想使用'.includes()'來獲得主要的東西就是IE的支持。 IE不支持箭頭功能。 – Makyen

+0

@Makyen箭頭函數比Array.includes更好支持。 Edge中不支持Array.includes,而箭頭函數是。 – Cristy

+0

是的,箭頭函數比'.inlcudes()'支持得更好。但是,[版本14中支持['Array.prototype.includes()']](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes# Browser_compatibility)。因此,不使用'.includes()'得到的主要東西就是IE支持,你必須不使用[arrow functions](https://developer.mozilla.org/en-US/docs/Web/的JavaScript /參考/函數/ Arrow_functions#Browser_compatibility)。 – Makyen

0
ids.filter(id => items.s.includes(id)) 

「過濾器」 的ids那些列表,其items.s 「包括」。

0

var item = { 
 
    b: null, 
 
    c: "asd", 
 
    i: 10, 
 
    q: 10, 
 
    s: [237,241] 
 
} 
 
var ids = [237, 238, 239, 240, 242, 243]; 
 
// way number 1 
 
for(var i = 0; i < item.s.length; i++){ 
 
    if(~ids.indexOf(item.s[i])){ 
 
    console.log(item.s[i]); 
 
    } 
 
} 
 
//way number 2 
 
var myArr = item.s.filter(x => ~ids.indexOf(x)); 
 
console.log(myArr);

相關問題