Javascript 将对象数组合并到单个对象中
我有一个需要组合成单个对象的对象数组,但在合并时,它优先于某些值 我得到一个如下的错误。恳请建议 TypeError:Object.fromEntries不是函数 输入: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',
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。