Javascript 如何替换数组中的对象值?
我一直被这件事难住了,想找个方向。我有一个国家目标:Javascript 如何替换数组中的对象值?,javascript,reactjs,Javascript,Reactjs,我一直被这件事难住了,想找个方向。我有一个国家目标: const state = [ {type: 'Primary', number: 123456}, {type: 'Mobile', number: 789012} ] 我有一个函数,它为旧值、新值和索引提供更新值 如何替换“Mobile”对象中的特定数字值并返回新数组? const state=[ {类型:'Primary',编号:123456}, {类型:'Mobile',号码:789012} ] const someFunct
const state = [
{type: 'Primary', number: 123456},
{type: 'Mobile', number: 789012}
]
我有一个函数,它为旧值
、新值
和索引提供更新值
如何替换“Mobile”对象中的特定数字值并返回新数组?
const state=[
{类型:'Primary',编号:123456},
{类型:'Mobile',号码:789012}
]
const someFunction=(状态、旧值、新值、索引)=>{
让newState=state.map(e=>{
如果(e.type==索引)e.number=newValue;
返回e
})
返回新闻状态
}
const newState=someFunction(state',123456',Mobile')
console.log(newState)
您可以使用来查找相应的对象并替换特定值:
const state=[
{类型:'Primary',编号:123456},
{类型:'Mobile',号码:789012}
]
//这将查找并返回第一个匹配的项,如果找不到,则返回未定义的项
const ObjectToChange=state.find(elem=>elem.type==='Mobile')
if(ObjectToChange!=未定义)
ObjectToChange.number=42;
console.log(状态)代码>如果您的意思是更改值:
const state=[
{类型:'Primary',编号:123456},
{类型:'Mobile',号码:789012}
];
state[state.findIndex(item=>item.type==='Mobile')]={type:'Mobile',number:1111}
log(JSON.stringify(state,null,2))
如果需要更改状态
数组索引
,则新值
和旧值
:
const newState = state.map((obj, i) => {
if(i === index && obj.number === oldValue) {
let newObj = { ...obj };
newObj.number = newValue;
return newObj;
}
return obj;
}
您可以使用Array.map
返回更新后的数组,如下所示:
const updateFunction=(状态、旧值、新值、索引)=>{
返回state.map((stateObject,i)=>i==index?({…stateObj,编号:newValue}):stateObject);
}
您真的要返回新数组还是用它设置状态?你试过什么了吗?我不认为常数设置后可以改变:你在找这样的东西吗?state[index].number=newValueShallow使用扩展语法,.splice()
通过索引插入修改的对象并将状态设置为修改的数组来复制您的状态
,避免使用索引访问数组项-状态更新是异步的,可能会在执行前进行批处理,因此如果追加/删除项,您正在冒险修改错误的数组项。相反,您最好为每个对象设置id
属性,并通过id
访问这些项。只需添加一点:不必先创建副本,然后分配number
,您可以一步完成所有操作:返回{……obj,number:newValue}代码>