[英]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可以得到狀態為Approved
的MAINID
數組。
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.