javascript - 如何在不改变容器的情况下更改数组值(对象数组内部)?javascript
问题描述
我想要实现的是在这种情况下,当名称为“Mario”时,用 arr 的值填充数组“presents”,我得到的是数组“present”修改,但我想要的是一个非可变数组,只改变空数组的值与另一个数组的值(在这种情况下,我以 arr 为例)
let present= [
{
name: "Peter",
presents: []
},
{
name: "Mario",
presents: []
},
{
name: "Amanda",
presents: []
},
{
name: "David",
presents: []
}
]
arr = ["car","coal"]
const res= present.map(s =>s.name == "Mario" ? s.presents.concat(arr) : [])
console.log(res)
我想得到什么:
let present= [
{
name: "Peter",
presents: []
},
{
name: "Mario",
presents: ["car","coal"]
},
{
name: "Amanda",
presents: []
},
{
name: "David",
presents: []
}
]
pd:抱歉,我无法解释得更好,仍在学习英语。
解决方案
您可以传播对象并添加所需的数组。
const
present = [{ name: "Peter", presents: [] }, { name: "Mario", presents: [] }, { name: "Amanda", presents: [] }, { name: "David", presents: [] } ],
array = ["car", "coal"],
result = present.map(({ presents, ...o }) => ({
...o,
presents: [...presents, ...(o.name === "Mario" ? array : [])]
}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- python - How to create sprites around a location?
- ios - 多次调用 ViewDidLoad 将 SwiftUI 调用到情节提要?
- typescript - 如何在打字稿中获取范围数数组
- vim - 如何在vimscript中将搜索结果作为列表获取?
- python - 根据条件在 Jupyter Notebook 中显示 DataFrame
- c - MbedTLS 和 .NET BouncyCastle 与 Curve25519 的互操作性问题
- python - Django显示在不同字段中上传文件
- powershell - 如何将文件夹移动到具有文件夹第一个字符名称的子文件夹中以支持文件夹名称中的 Unicode 字符?
- regex - 电子邮件标题的正则表达式并合并为单个表达式
- mysql - 如何使用现有代码在 SQL 工作台中创建数据库,然后在 R 中使用它?