javascript物件陣列共享例項的有趣用法
阿新 • • 發佈:2018-12-21
在開發中,碰到利用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中的物件也被相應的修改了。實際應用要比這個示例更為複雜。