Javascript 过滤对象并修改属性
我有一个新手的问题,我试着一遍又一遍地阅读手册,但还是弄不明白 所以我有这个代码:Javascript 过滤对象并修改属性,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我有一个新手的问题,我试着一遍又一遍地阅读手册,但还是弄不明白 所以我有这个代码: export function editSerier(data, products) { return (dispatch) => { const filteredProducts = Object.assign( ...Object.keys(products) .filter(key => products[key]
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”过滤传入的对象产品,然后使用“data”中的属性修改剩余产品的现有属性
但是,这段代码不允许我运行它。
有人知道吗
更新:
刚刚通过合并两个对象解决了这个问题
const filteredProducts = Object.assign(
...Object.keys(products)
.filter(key => products[key].Artikelgrupp === data.Artikelgrupp)
.map(k => ({
[k]: {...products[k], ...data}
}))
)
您的JavaScript无效。如果需要嵌套对象,则需要
{something:{}
,如果要使用计算属性名,则需要用[]
将其包围
因此,这将起作用
导出函数编辑器(数据、产品){
返回调度=>{
const filteredProducts=Object.assign(
…对象。键(产品)
.filter(key=>products[key].Artikelgrupp===data.Artikelgrupp)
.map(k=>({
[k] :{
[产品[k]]:{
Beskrivning:数据,Beskrivning,
kategori:data.kategori,
状态:data.status,
synas:data.synas,
tillverkare:data.tillverkare,
titel:data.titel
}
}
}))
);
console.log(filteredProducts);
};
}
如果我理解正确,您希望获得一个对象,该对象:
- 排除
的所有值对象,其中products
字段与Artikelgrupp
和数据不匹配。Artikelgrupp
- 来自
数据
对象的特定字段
,Beskrivning
等将合并/复制到结果对象的产品值中kategori
/* Extract entry key/value pairs from products object */
Object.entries(products)
/* Reduce entry pairs to required object shape */
.reduce((result, [key, value]) => {
/* Substitute for prior filter step. Avoid overhead of array copy
between prior filter and this reduction. */
if(value.Artikelgrupp !== data.Artikelgrupp) {
return result;
}
/* Update result object, "upserting" fields of data object into
existing product value, for this reduce iteration */
return {
...result,
[ key ] : {
...value,
Beskrivning: data.Beskrivning,
kategori: data.kategori,
status: data.status,
synas: data.synas,
tillverkare: data.tillverkare,
titel: data.titel
}
};
}, {})
它工作,但不是我想要的方式。“数据”对象将被合并到产品中,而不是作为嵌套对象嵌套。刚刚解决了它,但谢谢。你的解决方案,让我意识到错误在哪里。@OblicionA你能发布你的解决方案吗?