javascript - 过滤对象并修改属性
问题描述
我有一个新手问题,我试图一遍又一遍地阅读手册,但无法弄清楚。
所以我有这个代码:
export function editSerier(data, products) {
return (dispatch) => {
const filteredProducts = Object.assign(
...Object.keys(products)
.filter(key => products[key].Artikelgrupp === data.Artikelgrupp)
.map(k => ({
[k]: products[k]:{
Beskrivning: data.Beskrivning,
kategori: data.kategori,
status: data.status,
synas: data.synas,
tillverkare: data.tillverkare,
titel: data.titel}
})
})
console.log(filteredProducts)
}
}
我想通过“Artikelgrupp”过滤传入的对象产品,然后使用“数据”中的属性修改剩余产品的现有属性。
但是这段代码不允许我运行它。有人有什么想法吗?
更新:刚刚通过合并两个对象来解决它
const filteredProducts = Object.assign(
...Object.keys(products)
.filter(key => products[key].Artikelgrupp === data.Artikelgrupp)
.map(k => ({
[k]: {...products[k], ...data}
}))
)
解决方案
您的 JavaScript 无效。如果你想要一个嵌套对象,你需要{ something: { } }
,如果你想使用计算属性名,你需要用[]
.
所以,这将工作
export function editSerier(data, products) {
return dispatch => {
const filteredProducts = Object.assign(
...Object.keys(products)
.filter(key => products[key].Artikelgrupp === data.Artikelgrupp)
.map(k => ({
[k]: {
[products[k]]: {
Beskrivning: data.Beskrivning,
kategori: data.kategori,
status: data.status,
synas: data.synas,
tillverkare: data.tillverkare,
titel: data.titel
}
}
}))
);
console.log(filteredProducts);
};
}
推荐阅读
- elixir - 透析器不知道:httpc
- redirect - 我无法从 Spotify 为我的应用检索访问令牌
- c# - Unity使用触摸旋转相机 - 移动
- javascript - javascript中的构造函数参数
- reactjs - 用 jest 和 react-testing-library 测试反应上下文
- sql - 如何在 NorthWind SQL Server 上执行聚合?
- spring - Spring Boot Reactive Redis 2连接工厂导致健康检查失败
- shell - 我想使用 sed 替换 html 文件中的时间戳
- python - 如何创建“控制台”显示以显示我在 tkinter 窗口中运行的代码的输出?
- javascript - React - 你如何强制 onLoad 调用图像