'How to modify the value of only one of the keyvalues in the json array of js and keep the others?
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?
Solution 1:[1]
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)
Solution 2:[2]
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);
Solution 3:[3]
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"}));
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | CertainPerformance |
| Solution 3 | Anuj Kumar |
