请问这样为什么不可以呢

请问这样为什么不可以呢

<template>

<div>

<p>{{ sortItems }}</p>

<p>{{items}}</p>

</div>

</template> <script>

export default {

data() {

return { items: [1, 4, 6, 7, -9, 4, 0, -2, -1, 8] };

},

computed: {

sortItems: function() {

let items1 = items;

return this.items1.sort(function(a, b) {

return a - b;

});

}

}

};

</script>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,引用类型赋值指向的是同一个地址,所以items1改变之后,items也会改变,这种改变是正常的,因为在实际中不可能两种情况同时存在。

如果想要原来的不改变,可以使用JSON对象中的方法来进行复制:

http://img1.sycdn.imooc.com//climg/5d1ab978000181fe07460230.jpg

这样复制出来的数组和原数组就没有关系了:

http://img1.sycdn.imooc.com//climg/5d1ab991000164cb03560080.jpg

知道这样使用就可以,自己测试下,祝学习愉快!

好帮手慕星星 2019-07-01 19:00:36

你好,是this用错了地方,this使用data的属性,在方法中定义的变量不需要使用this,如下修改:

http://img1.sycdn.imooc.com//climg/5d19e7cd00011f9405500262.jpg

自己重新测试下,祝学习愉快!

  • 提问者 CaNg_7 #1
    谢谢 这样可以了 但是我还有一个问题就是 现在输出的两个数组是一样的 我尝试把this.items 赋值给items 是不想让它的改变污染的之前的数组 但是还是失败了.请问是赋值的时候他们指向同一个堆内存了吗? 我不太确定自己的思路对不对.请问怎么样才能避免这个问题呢? 谢谢
    2019-07-01 19:05:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师