第一种:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var arr = [{
name: 'sxy',
like: '1',
sex: '女'
},
{
name: 'sxy',
like: '2',
sex: '女'
},
{
name: 'sxy',
like: '3',
sex: '女'
},
{
name: 'cjh',
like: '4',
sex: '男'
},
{
name: 'cjh',
like: '5',
sex: '男'
},
{
name: 'cjh',
like: '6',
sex: '男'
}
];
function filterData(arr) {
var obj = {};
var dataList = [];
arr.map(function(item) {
if (!obj[item.name]) {
var newObj = {
name: item.name,
sex: item.sex,
like: [item]
}
dataList.push(newObj)
obj[item.name] = item
} else {
for (var i = 0; i < dataList.length; i++) {
dj = dataList[i];
if (dj.name === item.name) {
dj.like.push(item);
break
}
}
}
return dataList
})
return dataList
}
console.log(filterData(arr))
</script>
</body>
</html>
第二种:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var arr = [{
name: 'sxy',
like: '1',
sex: '女'
},
{
name: 'sxy',
like: '2',
sex: '女'
},
{
name: 'sxy',
like: '3',
sex: '女'
},
{
name: 'cjh',
like: '4',
sex: '男'
},
{
name: 'cjh',
like: '5',
sex: '男'
},
{
name: 'cjh',
like: '6',
sex: '男'
}
];
function fn(target) {
const obj = {};
const result = [];
target.map((t) => {
let key = t.name;
if (obj[key]) {
const n = {
'like': t.like
}
obj[key].like.push(n)
} else {
const n = {
'like': t.like
}
t.like = [n];
obj[key] = t
}
});
for (const key in obj) {
const element = obj[key];
result.push(element)
}
return result
}
console.log(fn(arr))
</script>
</body>
</html>