在开发中,碰到利用javacript对象数组共享实例,来实现修改该数组中对象属性。示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<script>
function addCount(arr){
if(arr.length == 0){
return;
}else{
var obj = arr.shift();
obj.count = obj.count + 10;
addCount(arr);
}
}
var arr1 = [];
for(i = 0; i < 3; i++){
var obj = {
name: "name" + i,
count: i
}
arr1.push(obj);
}
var arr2 = [];
for(i = 0; i < 2; i++){
var obj = {
name: "name" + i,
count: i
}
arr2.push(obj);
}
var arr3 = [];
for(i = 0; i < 1; i++){
var obj = {
name: "name" + i,
count: i
}
arr3.push(obj);
}
var arr = [].concat(arr1, arr2, arr3);
addCount(arr);
console.log(arr1);
console.log(arr2);
console.log(arr3);
</script>
</body>
</html>
本例中,三个数组的对象结构是一样的。因为某些原因,这三个数组中的对象属性都需要做修改,于是使用concat将这三个数组先拼接起来,然后用到了一个递归函数来代替循环来做属性的修改。当递归函数对拼接数组做了修改,原来的arr1,arr2, arr3中的对象也被相应的修改了。实际应用要比这个示例更为复杂。