将映射返回的对象分散到一个对象中

问题描述 投票:0回答:2

我正在尝试从循环中获取结果并将其传播到变量中

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"}

知道如何实现这一目标吗?

javascript object ecmascript-6 spread-syntax
2个回答
4
投票

使用

map
高阶方法总是会返回一个数组。如果您想将数组的对象组合成单个对象,则需要使用
reduce
高阶方法。

const updateds = Array.from(document.querySelectorAll('.updated')).reduce((accumulator, item) => {
  return {
    ...accumulator,
    [item.dataset.slug]: item.dataset.position
  };
}, {})

0
投票

你可以使用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), {})
© www.soinside.com 2019 - 2024. All rights reserved.