2017-07-24 79 views
1

我有一個JSON具有以下結構獲取從JSON鍵的值時,如果條件滿足

    [ 
          {"key":1,"name":"aaa"}, 
          {"key":2,"name":"bbb"} 

       ] 

我需要得到它的關鍵是2的對象,我必須讓它像

單獨的數組
      [ 

          {"key":2,"name":"bbb"} 

         ] 

例如,我只給出了2個對象,它可以超過100個。有人可以幫助我有效的方式

+0

'.filter()'如果你有'key'屬性爲'1'的多個對象,並且你想得到所有的t但是,如果你想獲得主題對象的第一次出現,請使用'.find()'。 – Redu

回答

1

Array#find可能會有所幫助。

let obj = arr.find(v => v.key == 2); 

如果你想將其存儲在陣列內:

let obj = [arr.find(v => v.key == 2)]; 

或者一個循環的方法(當條件滿足 - 打破循環):

let arr = [{ 
 
    "key": 1, 
 
    "name": "aaa" 
 
    }, 
 
    { 
 
    "key": 2, 
 
    "name": "bbb" 
 
    } 
 
]; 
 

 
let res = []; 
 

 
for (let elem of arr) { 
 
    if (elem.key == 2) { 
 
    res.push(elem); 
 
    break; 
 
    } 
 
} 
 

 
console.log(res);

0

使用filter來實現這一點:

var result = data.filter(function(val){ 
    return val.key==2; 
}); 

我希望有所幫助:)

+0

感謝您的快速響應。這個方法比array.find()更有效率。我的意思是當我們有超過100個物體時哪個更好 – Karthi

+0

我不知道這個是否有任何缺陷! 'filter'運行直到數組的末尾,並調用每個項目的回調函數;與找到之後停止的'find'相反。當回調在其中一個附加迭代元素上引發異常時,結果會有所不同。 –