js判断json数组合并指定json数据一样的数据形成新的json数组

诸位大佬,可否扫下右下方参与下“支付宝”红包活动!小弟万分感谢!

开发中有时需要我们对一个json组成的数组进行这样的处理:json中特定属性名的属性值如果相同就合并相同的几条数据。如:

var arr = [ 
{id:0,"title":"六月"},
{id:1,"title":"六月初"},
{id:2,"title":"六月初博客"},
{id:3,"title":"六月"},
{id:4,"title":"六月博客站"}
]

合并title为六月的数据且id用逗号分隔;结果如图:


完整代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var arr = [
{id:0,"title":"六月"},
{id:1,"title":"六月初"},
{id:2,"title":"六月初博客"},
{id:3,"title":"六月"},
{id:4,"title":"六月博客站"}
]
var list = [];
var newArray = [];
for (var i = 0; i < arr.length; i++) {
var n = list.indexOf(arr[i].title);
if (n==-1) {
list.push(arr[i].title);
newArray.push(arr[i]);
} else {
newArray[n].id = newArray[n].id+","+arr[i].id;
}
}
console.log(newArray)
</script>
</body>
</html>

代码解析:

创建两个新的数据分别存储你需要判断是否相同的值(list)和新组成的数组(newArray

循环需要判断的数组;通过indexOf方法来获取再list是否存在判断的属性值,

存在就拼接属性值的id

不存在就先将该属性值存入数组(list)中,再把当前数组存入新生成的数组中(newArray

最后获取的newArray数组就是合并判断后的数组!