请帮助我,我真的对JavaScript的slice()
感到困惑。我已经阅读了Array.prototype.slice()
的文档。它说:
对于对象引用(不是实际对象),slice将对象引用复制到新数组中。原始数组和新数组都引用同一对象。如果引用的对象发生更改,则更改对新数组和原始数组都是可见的。
在此代码中,我对实际对象使用slice()
,但它仍返回引用
var arObj = [
{ 'name': 'Jon', 'age': 24 },
{ 'name': 'Mark', 'age': 32 },
{ 'name': 'Kacy', 'age': 22 }
];
// use splice to copy array of objects into second variable
var ar2 = arObj.slice();
// modify property value in copy
ar2[1].name = 'Bill';
// view original (also modified)
console.log( arObj[1].name ); // Bill
第二个代码不是:
let data = this.state.data.slice(); //If you don't have the slice function, it will return a reference.
console.log(this.state.data);
data.reverse();
如果我尝试反转或更改数据值,则(this.state.data)的值不会更改。这是this.state.data的结构:
答案 0 :(得分:0)
感谢大家对我的帮助,并为我的愚蠢错误表示歉意。 reverse()函数不会影响原始数组。仅当您更改引用数组中一项或多项的值时,它才会受到影响。