繁体   English   中英

从基于值的对象数组形成对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM