为什么删除在javascript中对数组不起作用?
我试图删除一个数组部分 不起作用为什么删除在javascript中对数组不起作用?,javascript,arrays,Javascript,Arrays,我试图删除一个数组部分 不起作用 删除我的数组[索引]; 起作用了吗 my_数组拼接(索引,1); 当查看阵列时,在console.log中这两种情况下都很好,但第一种情况使我的应用程序崩溃 我不确定我使用的Vue是否以不同的方式处理这些问题 为什么最后一个有效,而第一个无效?这与Vue中的更改检测工作方式有关。在对象创建时,为每个属性创建getter和setter。一旦您对其进行更新,就会检测到更改 直接添加或删除将通过此系统,并将破坏您的应用程序 这里更详细地描述了这一点:这与Vue中的
删除我的数组[索引];
起作用了吗
my_数组拼接(索引,1);
当查看阵列时,在console.log中这两种情况下都很好,但第一种情况使我的应用程序崩溃
我不确定我使用的Vue是否以不同的方式处理这些问题
为什么最后一个有效,而第一个无效?这与Vue中的更改检测工作方式有关。在对象创建时,为每个属性创建getter和setter。一旦您对其进行更新,就会检测到更改 直接添加或删除将通过此系统,并将破坏您的应用程序
这里更详细地描述了这一点:这与Vue中的更改检测工作方式有关。在对象创建时,为每个属性创建getter和setter。一旦您对其进行更新,就会检测到更改 直接添加或删除将通过此系统,并将破坏您的应用程序
这里更详细地描述了这一点:使用
delete
操作符不会影响数组的长度,因为它会导致将此索引处的元素设置为未定义
newvue({
data(){return{array:[1,2,3]},
created(){删除this.array[1];console.log(this.array[1]);}
});代码>
使用delete
操作符不会影响数组的长度,因为它会导致将此索引处的元素设置为未定义
newvue({
data(){return{array:[1,2,3]},
created(){删除this.array[1];console.log(this.array[1]);}
});代码>
基于,JavaScriptdelete
操作符从对象中删除属性。同一页面部分删除数组元素
建议使用第二种情况下使用的拼接
或者删除数组元素
const arr=['a','b','c'];
const deleteByIndex=(arr,index)=>arr.filter((u,i)=>i!==index);
log(deleteByIndex(arr,1))
基于,JavaScriptdelete
操作符从对象中删除属性。同一页面部分删除数组元素
建议使用第二种情况下使用的拼接
或者删除数组元素
const arr=['a','b','c'];
const deleteByIndex=(arr,index)=>arr.filter((u,i)=>i!==index);
console.log(deleteByIndex(arr,1))
它确实可以工作,但它做的事情与splice
非常不同,这是因为delete
实际上是为对象定义的,并且对数组没有特殊行为,delete
不会对使用它的数组重新编制索引,它会给您留下一个稀疏数组,其中assplice
会根据需要对数组重新编制索引。它确实有效,但是它与splice
有很大的不同,这是因为delete
实际上是为对象定义的,并且对数组没有特殊的行为。“特殊行为”指的是重新索引,delete
不重新索引它所使用的数组,它留给您的是稀疏数组,其中assplice
根据需要重新为数组编制索引。delete
不会将已删除索引的值设置为undefined
,而是删除索引,导致数组中出现空插槽。delete
不会将已删除索引的值设置为undefined
,而是删除索引,导致阵列中出现空插槽。哦,我没有提到,但我使用的是Vue 3,它们与阵列之间存在固定的反应性问题。哦,我没有提到,但我使用的是Vue 3,它们与阵列之间存在固定的反应性问题。