Javascript 将对象数组合并到单个对象中

Javascript 将对象数组合并到单个对象中,javascript,node.js,Javascript,Node.js,我有一个需要组合成单个对象的对象数组,但在合并时,它优先于某些值 我得到一个如下的错误。恳请建议 TypeError:Object.fromEntries不是函数 输入: let items = [{"L4L5":"NA","L1":"NA","L2":"X","L6L7":"NA","L3":"NA"}, {"L4L5":"AND","L1":"X","L2":"X","L6L7":"NA","L3":"X"}] let filter = ['X',

我有一个需要组合成单个对象的对象数组,但在合并时,它优先于某些值

我得到一个如下的错误。恳请建议

TypeError:Object.fromEntries不是函数

输入:

let items =    [{"L4L5":"NA","L1":"NA","L2":"X","L6L7":"NA","L3":"NA"},
                 {"L4L5":"AND","L1":"X","L2":"X","L6L7":"NA","L3":"X"}]

let filter = ['X', 'AND', 'OR'];
 {"L4L5":"AND","L1":"X","L2":"X","L6L7":"NA","L3":"X"}
输出:

let items =    [{"L4L5":"NA","L1":"NA","L2":"X","L6L7":"NA","L3":"NA"},
                 {"L4L5":"AND","L1":"X","L2":"X","L6L7":"NA","L3":"X"}]

let filter = ['X', 'AND', 'OR'];
 {"L4L5":"AND","L1":"X","L2":"X","L6L7":"NA","L3":"X"}
代码

  let out=  items.reduce((a, b) => Object.fromEntries(Object
                                       .keys(a)
                                       .map(k => [k, filter.includes(b[k]) ? b[k] : a[k]])
        ));

Object.fromEntries
包含在节点12中。我猜你使用的是旧版本

没有
Object.fromEntries
可以做的是使用polyfill,或者尝试不使用语法糖,如下所示:

let项目=[
{“L4L5”:“NA”,“L1”:“NA”,“L2”:“X”,“L6L7”:“NA”,“L3”:“NA”},
{“L4L5”:“AND”,“L1”:“X”,“L2”:“X”,“L6L7”:“NA”,“L3”:“X”}
];
让filter=['X','AND','OR'];
函数合并(项目、筛选器){
//准备结果对象
让结果={};
//逐一遍历所有项目
for(设i=0,item;item=items[i];i++){
//对于每个项目,循环遍历每个键
for(让k进入项目){
//如果结果没有该键,或者该值不是首选项,请设置它
如果(!result.hasOwnProperty(k)| filter.indexOf(result[k])<0){
结果[k]=项目[k];
}
}
}
返回结果;
}

日志(合并(项、过滤器))您的代码按预期工作,我想这是节点版本。我们的服务器节点是10.x。