Hon*_*ngh 1 javascript typescript
我正在尝试更新对象数组。该active键将根据用户的选择或字符串数组设置为 true。
例如,选择 后ABC, DEF,这两个 ID 的active键将设置为。true
const defaultArray = [
{
"active": true,
"id": 1,
"name": "ABC",
"value": "1"
},
{
"active": true,
"id": 2,
"name": "DEF",
"value": "2"
},
{
"active": true,
"id": 3,
"name": "GHI",
"value": "3"
}
]
Run Code Online (Sandbox Code Playgroud)
const selectedArray = [
"ABC",
"DEF"
]
Run Code Online (Sandbox Code Playgroud)
所以现在我需要根据默认数组创建一个新数组,并active=true仅为 中的字符串数组分配selecetedArray。
结果看起来像
const newArray = [
{
"active": true,
"id": 1,
"name": "ABC",
"value": "1"
},
{
"active": true,
"id": 2,
"name": "DEF",
"value": "2"
},
{
"active": false,
"id": 3,
"name": "GHI",
"value": "3"
}
]
Run Code Online (Sandbox Code Playgroud)
我试过。
const arrCopy = [...defaultArray]
arrCopy.forEach(x => x.active = false)
arrCopy.forEach(x => {
if(selectedArray.includes(x.name))
x.active = true
})
console.log(arrCopy)
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但是有没有更标准的方法来实现相同的目的。谢谢
您不需要两个循环来实现这一点,您可以直接map使用defaultArray.
defaultArray.map(x => ({...x, active: selectedArray.includes(x.name)}))
Run Code Online (Sandbox Code Playgroud)
defaultArray.map(x => ({...x, active: selectedArray.includes(x.name)}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |