<!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>
</body>
<script>
var arr = [
['abc1', 'abc@qq.com', '80'],
['abc1', 'abc@qq.com', '50'],
['abc1', 'abc@qq.com', '150'],
['1232', '123@qq.com', '60'],
['1232', '123@qq.com', '30'],
['aaa', '123@qq.com', '130'],
]
// 结果 [
// ['abc1','abc@qq.com',['80','50','150']],
// ['1232','123@qq.com',['60','30']],
// ['aaa','123@qq.com','130'],
// ]
function mergeArr(arr) {
var newArr = [];
arr.forEach(item => {
var dataItem = item
if (newArr.length > 0) {
var filterVal = newArr.find(v => {
return v[0] == dataItem[0]
})
if (filterVal) {
newArr.forEach(n => {
if (n[0] == filterVal[0]) {
let lastVal = null
if (typeof (filterVal[2]) == 'string') {
lastVal = [filterVal[2]]
} else {
lastVal = filterVal[2]
}
n[2] = [...lastVal, item[2]]
}
})
} else {
newArr.push(dataItem)
}
} else {
newArr.push(dataItem)
}
})
return newArr
}
console.log(mergeArr(arr))
</script>
</html>
第二种解法
let arr2 = arr1.reduce((arr, item) => {
let flag = arr.some((el, index) => {
if (el[0] === item[0]) {
arr[index][2] = [...el[2], item[2]];
return true;
}
});
if (!flag) {
let temp = [...item];
temp[2] = [item[2]];
arr.push(temp);
}
return arr;
}, []);
console.log(arr2)
// 输出
//[
// ['abc1','abc@qq.com',['80','50','150']],
// ['1232','123@qq.com',['60','30']],
// ['aaa','123@qq.com',['130']],
// ]