问题描述
我正在尝试从循环中获取结果以将其传播到变量中
const updateds = {
...
(Array.from(document.querySelectorAll('.updated')).map(item => {
return {[item.dataset.slug]: item.dataset.position};
}))
};
,结果应散布成这样的形式
{"chahan": "1","jacques-lacoste": "2","testcover": "3","kreo": "4"}
但是我得到了
{"chahan":"1"},{"jacques-lacoste":"2"},{"testcover":"3"},{"kreo":"4"}
有什么想法要实现吗?
解决方法
使用map
高阶方法总是会返回一个数组。如果要将数组的对象合并为单个对象,则要使用reduce
高阶方法。
const updateds = Array.from(document.querySelectorAll('.updated')).reduce((accumulator,item) => {
return {
...accumulator,[item.dataset.slug]: item.dataset.position
};
},{})
,
您可以使用Array.reduce
const updateds =Array.from(document.querySelectorAll('.updated')).map(item => {
return {[item.dataset.slug]: item.dataset.position};
})
;
const reducedResult=updateds.reduce((obj,Currentitem) =>Object.assign(obj,Currentitem),{})