我有一个像这样的数组:
const es = [
['A', 'A1'], // first A key
['B', null],
['C', null],
['A', null], // second A key
['B', null],
['C', null],
['D', 'D2']
]
我想要的是:
const res = {
A: 'A1',
B: null,
C: null,
D: 'D2'
}
所以,我想唯一键的对象,其中如果有重复的键值(比如A
,B
,C
)有不同的价值观,关键的值是不是空值。
要获得res
我可以做的:
const res = Object.fromEntries(flatten(es))
但是在这种情况下,res
是:
res = {
A: null,
B: null,
C: null
}
我认为是因为Object.fromEntries
“使一个set
”和第二个A
键代替了第一个。
那么,哪种才是我想要做的最好方法?
您可以尝试如下操作:
仅在以下情况下才需要设置新值:
null
或undefined
想法是分配第一个值并替换为最新的非空值。
const es = [
['A', 'A1'], // first A key
['B', null],
['C', null],
['A', null], // second A key
['B', null],
['C', null],
['D', 'D2']
]
const result = es.reduce((acc, [ key, value ]) => {
if (acc[ key ] == null || !!acc[ key ] && !!value) acc[key] = value;
return acc
}, {});
console.log(result)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句