slice()到对象数组没有返回引用?

时间:2019-01-02 08:24:25

标签: javascript reactjs reference slice

请帮助我,我真的对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的结构:

https://i.stack.imgur.com/94emV.png

1 个答案:

答案 0 :(得分:0)

感谢大家对我的帮助,并为我的愚蠢错误表示歉意。 reverse()函数不会影响原始数组。仅当您更改引用数组中一项或多项的值时,它才会受到影响。