开发者问题收集

如何替换数组中的对象值?

2020-08-11
102

我被这个问题难住了,一直在寻找方向。我有一个状态对象:

const state = [
{type: 'Primary', number: 123456}, 
{type: 'Mobile', number: 789012}
] 

我有一个函数,它为我提供了 oldValuenewValueindex 的更新值。

我如何才能替换特定的 number 值(例如在“Mobile”对象中)并返回新数组?

3个回答

如果您有 state 数组 index ,则需要更改 newValueoldValue

const newState = state.map((obj, i) => { 
  if(i === index && obj.number === oldValue) {
    let newObj = { ...obj };
    newObj.number = newValue;
    return newObj;
  }
  return obj;
}
 
jamomani
2020-08-11

您可以使用 array.find() 来查找相应的对象并替换特定的值:

const state = [
{type: 'Primary', number: 123456}, 
{type: 'Mobile', number: 789012}
]

// This will find and return the FIRST item that matches, or undefined if none are found
const ObjectToChange = state.find(elem => elem.type === 'Mobile')
if (ObjectToChange != undefined)
  ObjectToChange.number = 42;

console.log(state);
Cid
2020-08-11

如果您的意思是更改值:

const state = [
{type: 'Primary', number: 123456}, 
{type: 'Mobile', number: 789012}
];

state[state.findIndex(item=>item.type==='Mobile')]={type:'Mobile',number:1111}

console.log(JSON.stringify(state,null,2));
Vahid Alimohamadi
2020-08-11