Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中替换或更新数组项_Javascript_Arrays_Vue.js_Vuejs2 - Fatal编程技术网

如何在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 of
slice
),现在一切正常!非常感谢。
this.items.splice(index, 1, item)