Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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/7/css/37.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_Reactjs_Object - Fatal编程技术网

Javascript 需要将对象添加到处于状态的数组中

Javascript 需要将对象添加到处于状态的数组中,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,我需要向数组的最后一个对象添加一个对象 我有一个数组,其中包含处于类状态的对象 state={ items:[{key:"333",val:"Hi"},{key:"555", val:"Iam"}] } 我需要在最后一个item对象添加一个filter对象 items:[{key:"333",val:"Hi"},{key:"555", val:"Iam",filter:{refine:true}}] 我试过下面的那个 (this.state.items.length-1).conca

我需要向数组的最后一个对象添加一个对象

我有一个数组,其中包含处于类状态的对象

state={
items:[{key:"333",val:"Hi"},{key:"555", val:"Iam"}]
}
我需要在最后一个item对象添加一个filter对象

items:[{key:"333",val:"Hi"},{key:"555", val:"Iam",filter:{refine:true}}]
我试过下面的那个

    (this.state.items.length-1).concat({filters:{
        refine:true
    }}

您只需使用数组的
索引
方法访问最后一个对象,修改它并更新状态数组

let状态={
项目:[{键:“333”,val:“Hi”},{键:“555”,val:“Iam”}]
}
let last=state.items[state.items.length-1];
last={……last,过滤器:{refine:true}};
常数newState={
……国家,
项目:[
…state.items.slice(0,-1),
最后的
]
}

console.log(newState)您可以获取最后一个元素,然后将obj合并到该元素,然后再次将其添加到数组的末尾

let state={items:[{key:333,val:Hi},{key:555,val:Iam}]}
设obj={filter:{refine:true}}
让add=(首字母,obj)=>{
let last=初始[初始长度-1]
设arr=[…初始].slice(0,-2)
return[…initial,{…last,…obj}]
}
state.items=add(state.items,obj)

console.log(状态)
和一些小助手

 const lens = (key, fn) => obj => ({ ...obj, [key]: fn(obj[key]) });
 const mapIndex = (index, fn) => arr => arr.map((it, i) => i === (index + arr.length) % arr.length ? fn(it) : it);
这很容易:

 this.setState(lens("items", mapIndex(-1, it => ({ ...it, filter: { refine: true }}))));

你试了什么?这似乎是一项相当简单的任务。从数组中获取最后一个项目,然后向其添加
过滤器
键。如何
数组[array.length-1]
数组
访问最后一个
项目
?“我尝试了下面的一个”-看起来您应该再看一次JavaScript教程。“哪个处于状态”。。。所以你想以一种不变的方式来做吗?我猜这与React的状态有关,只是一个建议。而不是
state.items[state.items.length-1]
,您可以尝试
state.items.pop()
。这样可以避免再次切割。当然,它会改变
状态。items
,但您无论如何都是在设置新状态,所以不会有太大的影响