为什么删除在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]);}
});
基于,JavaScript
delete
操作符从对象中删除属性。同一页面部分
删除数组元素
建议使用第二种情况下使用的
拼接

或者
删除
数组元素

const arr=['a','b','c'];
const deleteByIndex=(arr,index)=>arr.filter((u,i)=>i!==index);
log(deleteByIndex(arr,1))
基于,JavaScript
delete
操作符从对象中删除属性。同一页面部分
删除数组元素
建议使用第二种情况下使用的
拼接

或者
删除
数组元素

const arr=['a','b','c'];
const deleteByIndex=(arr,index)=>arr.filter((u,i)=>i!==index);

console.log(deleteByIndex(arr,1))
它确实可以工作,但它做的事情与
splice
非常不同,这是因为
delete
实际上是为对象定义的,并且对数组没有特殊行为,
delete
不会对使用它的数组重新编制索引,它会给您留下一个稀疏数组,其中as
splice
会根据需要对数组重新编制索引。它确实有效,但是它与
splice
有很大的不同,这是因为
delete
实际上是为对象定义的,并且对数组没有特殊的行为。“特殊行为”指的是重新索引,
delete
不重新索引它所使用的数组,它留给您的是稀疏数组,其中as
splice
根据需要重新为数组编制索引。
delete
不会将已删除索引的值设置为
undefined
,而是删除索引,导致数组中出现空插槽。
delete
不会将已删除索引的值设置为
undefined
,而是删除索引,导致阵列中出现空插槽。哦,我没有提到,但我使用的是Vue 3,它们与阵列之间存在固定的反应性问题。哦,我没有提到,但我使用的是Vue 3,它们与阵列之间存在固定的反应性问题。