Home > Software engineering >  How to modify the value of only one of the keyvalues in the json array of js and keep the others?
How to modify the value of only one of the keyvalues in the json array of js and keep the others?

Time:05-12

This is the data that needs to be processed

let test=[
  {
    "id": 28620,
    "name": "fenbi1",
    "dn": "chl"
  },
  {
    "id": 5941,
    "name": "fenbi2",
    "dn": "chl"
  },
  {
    "id": 5226,
    "name": "fenbi3",
    "dn": "chl"
  }]

The requirement is to change only dn to ch the changed value is

  let test=[
  {
    "id": 28620,
    "name": "fenbi1",
    "dn": "ch"
  },
  {
    "id": 5941,
    "name": "fenbi2",
    "dn": "ch"
  },
  {
    "id": 5226,
    "name": "fenbi3",
    "dn": "ch"
  }]

This is the method I used

  test=test.map((item)=>({
    'id':item.id,
    'name':item.name,
    'dn':'ch'
  }))

This approach works but is not elegant because just to change one value you have to write the others as well, is there a better way to implement this?

CodePudding user response:

Just a simple for loop might be better than map in this situation

let test=[
  {
    "id": 28620,
    "name": "fenbi1",
    "dn": "chl"
  },
  {
    "id": 5941,
    "name": "fenbi2",
    "dn": "chl"
  },
  {
    "id": 5226,
    "name": "fenbi3",
    "dn": "chl"
  }]

  for (let item of test) {
     item.dn = 'ch'
  }

  console.log(test)

CodePudding user response:

Use rest syntax to collect the properties other than dn, then spread them into the new object.

const test=[{id:28620,name:"fenbi1",dn:"chl"},{id:5941,name:"fenbi2",dn:"chl"},{id:5226,name:"fenbi3",dn:"chl"}];

const output = test.map(({ dn, ...rest }) => ({ dn: 'ch', ...rest }));
console.log(output);

CodePudding user response:

You can write code like this.

let test=[
   {
      "id": 28620,
      "name": "fenbi1",
      "dn": "chl"
   },
   {
      "id": 5941,
      "name": "fenbi2",
      "dn": "chl"
   },
   {
      "id": 5226,
      "name": "fenbi3",
      "dn": "chl"
   }]

Now use array.map()

const newArray = test.map(e => ({...e,dn:"ch"}));
  • Related