[{name: '省级校验不合规', value: 0, type: 'top_1'},
{name: '行政处罚修复', value: 100000, type: 'top_1'},
{name: '浙江迟报', value: 200, type: 'top_1'},
{name: '新行政处罚', value: 0, type: 'top_1'},
{name: '国家校验不合规', value: 0, type: 'top_1'},
{name: '省级校验不合规', value: 100, type: 'top_2'},
{name: '新行政许可', value: 200000, type: 'top_2'},
{name: '国家校验不合规', value: 500, type: 'top_2'},
{name: '浙江迟报', value: 0, type: 'top_2'}]
[{name: '省级校验不合规', number1: 0, number2: 100},
{name: '行政处罚修复', number1: 100000, number2: 0},
{name: '浙江迟报', number1: 200, number2: 0},
{name: '新行政处罚', number1: 0, number2: 0},
{name: '国家校验不合规',number1: 0, number2: 500},
{name: '新行政许可', number1: 2000, number2: 0}]
怎么用js实现将上面的数组变成下面的数组呀
不知道写的对不对...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const arr1 = [{ name: '省级校验不合规', value: 0, type: 'top_1' },
{ name: '行政处罚修复', value: 100000, type: 'top_1' },
{ name: '浙江迟报', value: 200, type: 'top_1' },
{ name: '新行政处罚', value: 0, type: 'top_1' },
{ name: '国家校验不合规', value: 0, type: 'top_1' },
{ name: '省级校验不合规', value: 100, type: 'top_2' },
{ name: '新行政许可', value: 200000, type: 'top_2' },
{ name: '国家校验不合规', value: 500, type: 'top_2' },
{ name: '浙江迟报', value: 0, type: 'top_2' }]
const arr2 = [{ name: '省级校验不合规', number1: 0, number2: 100 },
{ name: '行政处罚修复', number1: 100000, number2: 0 },
{ name: '浙江迟报', number1: 200, number2: 0 },
{ name: '新行政处罚', number1: 0, number2: 0 },
{ name: '国家校验不合规', number1: 0, number2: 500 },
// { name: '新行政许可', number1: 2000, number2: 0 }, 兄弟怀疑你给的数据不太对
{ name: '新行政许可', number1: 0, number2: 200000 }]
function format(arr) {
let res = [];
for (const item of arr) {
let resItem = res.find(i => i.name === item.name)
if (!resItem) {
resItem = {
name: item.name,
number1: 0,
number2: 0
}
res.push(resItem)
}
resItem[`number${item.type.split('_').pop()}`] = item.value
}
return res;
}
console.log(JSON.stringify(format(arr1)));
console.log(JSON.stringify(arr2));
console.log(JSON.stringify(format(arr1)) === JSON.stringify(arr2));
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>登录页</title>
</head>
<body>
<script>
const arr = [
{ name: "省级校验不合规", value: 0, type: "top_1" },
{ name: "行政处罚修复", value: 100000, type: "top_1" },
{ name: "浙江迟报", value: 200, type: "top_1" },
{ name: "新行政处罚", value: 0, type: "top_1" },
{ name: "国家校验不合规", value: 0, type: "top_1" },
{ name: "省级校验不合规", value: 100, type: "top_2" },
{ name: "新行政许可", value: 200000, type: "top_2" },
{ name: "国家校验不合规", value: 500, type: "top_2" },
{ name: "浙江迟报", value: 0, type: "top_2" },
];
let result = [];
arr.map((item) => {
const isFindIndex = result.findIndex(
(child) => child.name === item.name
);
let num = item.type.split("_");
num = num[1];
num = "number" + num;
if (isFindIndex > -1) {
result[isFindIndex][num] = item.value;
} else {
const newObj = { name: item.name, number1: 0, number2: 0 };
newObj[num] = item.value;
result.push(newObj);
}
});
console.log("result", result);
</script>
</body>
</html>
代码如下~时间复杂度O(n) ,空间复杂度O(n)
满意请采纳回答 谢谢 ~
const list = [
{ name: "省级校验不合规", value: 0, type: "top_1" },
{ name: "行政处罚修复", value: 100000, type: "top_1" },
{ name: "浙江迟报", value: 200, type: "top_1" },
{ name: "新行政处罚", value: 0, type: "top_1" },
{ name: "国家校验不合规", value: 0, type: "top_1" },
{ name: "省级校验不合规", value: 100, type: "top_2" },
{ name: "新行政许可", value: 200000, type: "top_2" },
{ name: "国家校验不合规", value: 500, type: "top_2" },
{ name: "浙江迟报", value: 0, type: "top_2" },
];
const handleList = (props) => {
const map = new Map();
props.forEach((item) => {
let cur;
if (map.has(item.name)) {
cur = map.get(item.name);
cur.push(item.value);
} else {
cur = [item.value];
}
map.set(item.name, cur);
});
let result = [];
for (let [name, children] of map) {
let cur = { name };
children.map((item, index) => (cur[`number${index + 1}`] = item));
result.push(cur);
}
return result;
};
console.log(handleList(list)); // print result
结果如下