如何在JavaScript中替换或更新数组项
标题描述了我想要的,这是代码如何在JavaScript中替换或更新数组项,javascript,arrays,vue.js,vuejs2,Javascript,Arrays,Vue.js,Vuejs2,标题描述了我想要的,这是代码 当我们将产品添加到项目中时,如果它不存在(按id的差异),则一切正常。但是如果它存在,我只想修改该项。差异是由items数组中每个项目的id造成的 例如:如果首先,id=1,qty=3,然后,id=1,qty=3,我希望更新项目中的数量 newvue({ el:'事实', 数据:{ 输入:{ id:null, 数量:1 }, 项目:[] }, 方法:{ 附加项(){ 变量项={ id:this.input.id, 数量:此输入数量 }; if(index=this
当我们将产品添加到
项目中时,如果它不存在(按id的差异),则一切正常。但是如果它存在,我只想修改该项。差异是由items
数组中每个项目的id造成的
例如:如果首先,id=1,qty=3,然后,id=1,qty=3,我希望更新项目中的数量
newvue({
el:'事实',
数据:{
输入:{
id:null,
数量:1
},
项目:[]
},
方法:{
附加项(){
变量项={
id:this.input.id,
数量:此输入数量
};
if(index=this.itemExists(item)!==false)
{
this.items.slice(索引,1,item);
返回null;
}
此.items.push(项目)
},
itemExists($input){
for(var i=0,c=this.items.length;i
添加产品
添加
- {{item.qty+''+item.id}
您可能误用了切片
方法,对我有效:
this.items.splice(index, 1, item)
slice
不会根据所选内容触发视图更新
Vue包装了观察到的阵列的突变方法,因此它们也
触发视图更新。包装方法包括:
- 推
- 流行音乐()
- 移位()
- 取消移位()
- 拼接()
- 排序()
- 反向
区别在于项目的id(item.id
),你真的认为这对我有帮助吗?虽然这个代码片段可以解决这个问题,但确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因谢谢您的评论!但即使修改了,他这次也添加了有问题的项目。我希望已经添加到项目
中的项目
被更改!通过使用拼接(索引,1,项)
,可以将原始项替换为新项。如果有其他字段,可以使用Object.assign创建一个新项,该项合并到原始项中,然后替换它。类似于:splice(index,1,Object.assign({},this.items[index],item))
。直接就地修改项不是一个好主意,因为Vue无法检测到您所做的更改。看,谢谢你的帮助!在检查了一下它不起作用的地方之后,我发现如果(index=this.itemExists(item)!==false)
那将是(index=this.itemExists(item))!==错误)
。使用相同的代码,当然包括您的备注(splice
instand ofslice
),现在一切正常!非常感谢。
this.items.splice(index, 1, item)