reduce 构建新对象或者 数组

发布时间 2023-04-17 16:39:19作者: 10后程序员劝退师
// 原对象
const info = [
    {
        name: "A",
        value: 4,
    }, {
        name: "B",
        value: 7,
    }, {
        name: "C",
        value: 10,
    }
];
 // 期望对象
{
    A: 4,
    B: 7,
    C: 10,
}

// reduce:
const result = info.reduce((res, cur) => ({...res, [cur.name]: cur.value}), {});

result // {A: 4, B: 7, C: 10}

 

// 构建一个新数组也是同样的道理,把空数组作为初始值,然后通过迭代向数组中添加元素,最终得到的就是想要的结果数组。

// result为上面得到的{A: 4, B: 7, C: 10}
const arrResult = Object.keys(result).reduce((accu, cur) => [...accu, {key: cur, value: result[cur]}], []);

arrResult
// [{key: "A", value: 4}, {key: "B", value: 7}, {key: "C", value: 10}]

 

reduce数组去重

const sample = ["a", "b", "c", "a", "b", "d", "c"];
sample.reduce((acc, cur)
=> { if (!acc.includes(cur)) { acc.push(cur); } return acc; }, []);