陣列拷貝
1、concat
let newarr = .concat(oldarr)
2、擴充套件運算子
let newarr = [...oldarr]
3、slice
let newarr = oldarr.slice(0)
4、json.parse和json.stringify
var newarr = json.parse(json.stringify(oldarr))
注:上面前三種拷貝方法中concat、擴充套件運算子、slice只能實現陣列的淺拷貝;第四種json實現的是陣列、物件的深拷貝。
物件拷貝
1、object.assign
let newobj = object.assign({},oldobj)
2、擴充套件運算子
let newobj =
3、json.parse和json.stringify
var newobj = json.parse(json.stringify(oldobj))
注:上面前兩種拷貝方法只能實現陣列的淺拷貝;第三種json實現的是陣列、物件的深拷貝。
利用迴圈和遞迴實現陣列和物件的深拷貝
function clone(obj).tostring.call(obj)=='[object object]' );
for(var i in obj)
}else if( {}.tostring.call(obj)=='[object array]' )); // '{}'
json.stringify(true); // 'true'
json.stringify("foo"); // '"foo"'
json.stringify([1, "false", false]); // '[1,"false",false]'
json.stringify(); // ''
json.stringify();
// ""
json.stringify([new number(1), new string("false"), new boolean(false)]);
// '[1,"false",false]'
json.stringify();
// '{}'
json.stringify([undefined, object, symbol("")]);
// '[null,null,null]'
json.stringify();
// '{}'
json.stringify(, [symbol.for("foo")]);
// '{}'
json.stringify(
, function (k, v)
});// undefined
// 不可列舉的屬性缺省會被忽略:
json.stringify(
object.create(
null,
, y: })
);// ""
js陣列物件拷貝
陣列拷貝 var arr old var new arr arr.concat arr 0 old new new arr 1 0 new console.log arr new console.log new arr new 如果陣列元素是基本型別,就會拷貝乙份,互不影響,而如果是物件或者陣列,就...
JS 物件陣列淺拷貝,深拷貝
物件陣列的深拷貝與淺拷貝,簡單點來說,就是b複製了a,當a被修改時,未操作b,但b也跟著變了,就是淺拷貝,反之是深拷貝 深拷貝本身只針對較為複雜的object型別資料 淺拷貝 var a var b a a 1 age 18 console.log a,b 執行結果,a,b的age都發生了改變 偽深...
js陣列,物件深拷貝
無事,封裝了乙個js深拷貝的方法 基本思路 deepcopy data data 可能是陣列也可能是物件 1.判斷data是陣列 物件或者其他資料型別 2.宣告空陣列 或者 空物件 res 3.分別處理 如果陣列元素或物件屬性值不是陣列或物件,空陣列或物件之間接收元素 res.push data i...