簡體   English   中英

如何使用條件從javascript中的對象數組中獲取值

[英]how to get values from object array in javascript with condition

我正在嘗試用數組做一些復雜的事情。 我有數組

   ORGANIZATIONS = [
    {

        "MAINID": "INAP1650001",
        "Status": "Approved"
    },
    {
        "MAINID": "INAP1650002",
        "Status": "Pending"
    },
    {
     "MAINID": "INAP1650003",
      "Status": "Approved"
    },
    {
      "MAINID": "INAP1650004",
         "Status": "Pending"
    },
    {
     "MAINID": "INAP1650005",
     "Status": "Approved"
    }
]

所以我試圖獲得所有狀態為“已批准”的“MAINID”,並希望創建 MAINID 數組,例如MAINID_Array = [INAP1650001, INAP1650003,INAP1650005]
任何人都可以幫助我,因為我已經嘗試使用下面的但它給了我所有的 MAINID

var status = ''
var MAINID = ''
var MAINID_array = []
let len = ORGANIZATIONS.length

for (var i = 0; i < len; i++) {
    Status = ORGANIZATIONS[i].STATUS;
    MAINID = ORGANIZATIONS[i].MAINID;

    console.log('STATUS', Status);
    console.log('MAINID', MAINID);

        console.log('Approve STATUS', Status);

        MAINID_array.push(MAINID);

}

console.log(MAINID_array)

使用Array.prototype.reduce可以得到狀態為ApprovedMAINID數組。

 const input = [{ "MAINID": "INAP1650001", "Status": "Approved" }, { "MAINID": "INAP1650002", "Status": "Pending" }, { "MAINID": "INAP1650003", "Status": "Approved" }, { "MAINID": "INAP1650004", "Status": "Pending" }, { "MAINID": "INAP1650005", "Status": "Approved" } ]; const result = input.reduce((acc, cur) => (cur.Status === 'Approved' ? [ ...acc, cur.MAINID] : acc), []); console.log(result);

使用Array.prototype.filter()等高階函數根據Status屬性獲取所需的組織,使用Array.prototype.map()返回每個組織的MAINID以創建MAINID字符串數組。

 const ORGANIZATIONS = [{ "MAINID": "INAP1650001", "Status": "Approved" }, { "MAINID": "INAP1650002", "Status": "Pending" }, { "MAINID": "INAP1650003", "Status": "Approved" }, { "MAINID": "INAP1650004", "Status": "Pending" }, { "MAINID": "INAP1650005", "Status": "Approved" } ]; const getApprovedOrganizations = organizations => organizations .filter(({ Status }) => Status === 'Approved') .map(({ MAINID }) => MAINID); const MAINID_Array = getApprovedOrganizations(ORGANIZATIONS); console.log(MAINID_Array);

您可以使用 map 和 filter 來解決您的問題。

const mainIds = ORGANIZATIONS.filter((item) => item.Status === 'Approved').map((item) => item.MAINID);

這是單行答案:

 let ORGANIZATIONS = [ { "MAINID": "INAP1650001", "Status": "Approved" }, { "MAINID": "INAP1650002", "Status": "Pending" }, { "MAINID": "INAP1650003", "Status": "Approved" }, { "MAINID": "INAP1650004", "Status": "Pending" }, { "MAINID": "INAP1650005", "Status": "Approved" } ] let mainIdArray = ORGANIZATIONS.filter(x => x.Status === "Approved").map(x => x.MAINID); console.log(mainIdArray);

解釋:

.filter(x => x.Status === "Approved")

獲取Status === "Approved"的組織。

.map(x => x.MAINID)

獲取每個組織的MAINID字段。

祝你好運!

使用以下內容:

const MAINID_array =[];
ORGANIZATIONS.forEach(element =>{
       if (element['Status'] === "Approved"){
           MAINID_array.push(element['MAINID']);
       }  
})

暫無
暫無

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

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