簡體   English   中英

如何在JavaScript中獲取嵌套數組對象

[英]How to get nested array object in javascript

我想知道如何根據javascript中的條件進行過濾。 如果存在minamt > min ,則獲取whole objremove that particular object in the obj


function getItem(obj){
  return
   obj.filter(e=>e.hasOwnProperty("min")?e.amt>e.min:e);

}
var obj1=[{
  "id": "name",
  "min": 300,
  "amt": 200,
  "cn" : "SG"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
}]
var obj2=[{
  "id": "name",
  "min": 300,
  "amt": 500,
  "cn" : "SG"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
}]


預期輸出:var result = getItem(obj1);

[{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
}]

var result = getItem(obj2);

[{
  "id": "name",
  "min": 300,
  "amt": 500,
  "cn" : "SG"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
},{
  "id": "others",
  "amt": 200,
  "cn" : "TH"
}]

檢查min存在,如果不返回,則檢查其是否大於amt

 var obj1 = [{ "id": "name", "min": 300, "amt": 200, "cn": "SG" }, { "id": "others", "amt": 200, "cn": "TH" }, { "id": "others", "amt": 200, "cn": "TH" }] var obj2 = [{ "id": "name", "min": 300, "amt": 500, "cn": "SG" }, { "id": "others", "amt": 200, "cn": "TH" }, { "id": "others", "amt": 200, "cn": "TH" }]; const res1 = obj1.filter(({ min, amt }) => { return !min || (amt > min); }); console.log(res1); const res2 = obj2.filter(({ min, amt }) => { return !min || (amt > min); }); console.log(res2); 

如果我正確理解了您的問題,則僅當對象包含min ,才希望應用條件amt > min min 如果對象不包含min ,則返回整個對象。

在這種情況下, getItem應該如下所示:

const getItem = arrayOfObjects => arrayOfObjects.filter(obj => {
    if (obj['min']) {
        if (obj['amt'] > obj['min']) return true
    } else {
        return true
    }
}) 

這是我嘗試過的一種解決方案

 function getItem(obj) { return !('min' in obj) || obj.amt>obj.min ; } var obj1 = [{ "id": "name", "min": 300, "amt": 200, "cn": "SG" }, { "id": "others", "amt": 200, "cn": "TH" }, { "id": "others", "amt": 200, "cn": "TH" }] var obj2 = [{ "id": "name", "min": 300, "amt": 500, "cn": "SG" }, { "id": "others", "amt": 200, "cn": "TH" }, { "id": "others", "amt": 200, "cn": "TH" }] var result1 = obj1.filter(getItem); var result2 = obj2.filter(getItem); console.log('result1',result1); console.log('result2',result2); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM