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"}));