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}