<script>
//原本数据
var $odd = [{
gname: "a",
value: '1,2'
}, {
gname: "b",
value: '3,4,a'//需要将gname为a的value属性值与当前value值合并
}];
//需求数据
var $new = [{
gname: "a",
value: '1,2'
}, {
gname: "b",
value: '3,4,1,2'
}]
</script>
针对这个需求,有几点需要注意的:
1.必须有一个value的值为纯数字
2.不可互相嵌套,例如gname为a的对象value值里面有b。gname为b的对象value值里面有a。
解决代码如下:
<script>
var arr = [{
gname: "a",
value: '1,2'
}, {
gname: "b",
value: '3,a,4'
}, {
gname: "c",
value: 'b,d,7'
}, {
gname: "d",
value: 'a,8,b'
}]
function fn(ar) {
ar.forEach((item, index) => {
for (var it of ar) {
if (it.value.includes(item.gname)) {
var newArr = it.value.split(",");
newArr.splice(newArr.indexOf(item.gname), 1);
it.value = newArr.join(",");
it.value = it.value.split().concat(item.value.split()).join(",")
}
}
});
console.log(ar)
return ar
}
fn(arr)
</script>