[英]Form object from Array of objects based of value
需要搜索对象数组并根据值 'X' 和 'AND'/OR 形成一个对象。 尝试使用以下代码但无法继续
输入 :
let objArr = [ {"L1":"NA","L2":"X","L1L2":"NA","L3":"NA"},{"L1":"X","L2":"NA","L1L2":"AND","L3":"NA"} ]
输出:
Obj = {"L1":"X","L2":"X","L1L2":"AND","L3":"NA"}
代码:
Object.keys(objArr ).forEach((key) => {
if (!(temp[key] == "X" || temp[key] == "AND" || temp[key] == "OR")) {
temp[key] = objArr [key]
}
})
您可以使用reduce
方法和Object.entries
上的一个for...of
循环来做到这一点。
let objArr = [ {"L1":"NA","L2":"X","L1L2":"NA","L3":"NA"},{"L1":"X","L2":"NA","L1L2":"AND","L3":"NA"} ] let result = objArr.reduce((r, e) => { for (let [k, v] of Object.entries(e)) { r[k] = (!r[k] || r[k] == 'NA') ? v : r[k] } return r; }, {}); console.log(result)
您可以在检查后获取键并映射条目并创建一个新对象。
let array = [ { L1: "NA", L2: "X", L1L2: "NA", L3: "NA" }, { L1: "X", L2: "NA", L1L2: "AND", L3: "NA" } ], prime = ['X', 'AND', 'OR'], result = array.reduce((a, b) => Object.fromEntries(Object .keys(a) .map(k => [k, prime.includes(b[k]) ? b[k] : a[k]]) )); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.