刷贴吧时看到的一个需求示例,让 AI 写了下用的 reduce() 方法,之前只是大概知道有这么个东西,姑且借这个例子加深下印象。
文档
Array.prototype.reduce() - JavaScript | MDN
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
代码案例
(() => {
const data = [
{ k: "a", v: 1 },
{ k: "a", v: 1 },
{ k: "a", v: 2 },
{ k: "a", v: 3 },
{ k: "b", v: 3 },
{ k: "b", v: 3 },
{ k: "b", v: 2 },
{ k: "c", v: 2 },
{ k: "c", v: 1 },
{ k: "c", v: 1 },
];
/* 转换成如下格式
[
{ k: "a", v: [1, 2, 3] },
{ k: "b", v: [3, 2] },
{ k: "c", v: [2, 1] }
];
*/
const result = data.reduce((acc, cur) => {
const { k, v } = cur;
const index = acc.findIndex(item => item.k === k);
if (index === -1) {
acc.push({ k, v: [v] });
} else {
acc[index].v.push(v);
// 去重,AI 还是会时不时无视一些明明显式声明的要求。。- -
acc[index].v = [...new Set(acc[index].v)];
}
return acc;
}, []);
console.log(result);
})();
结束
虽然有点水,但是好像也没啥好说的。。
一些其他文章: