[英]filtering object and modify properties
I am having a newbie question and I have tried to read the manuals over and over and cannot figure it out.我有一个新手问题,我试图一遍又一遍地阅读手册,但无法弄清楚。
so I have this code:所以我有这个代码:
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)
}
}
Where I want to filter the incoming object products by "Artikelgrupp" and then modify the existent properties of the remaining products with properties from "data".我想通过“Artikelgrupp”过滤传入的对象产品,然后使用“数据”中的属性修改剩余产品的现有属性。
However this code does not let me run it.但是这段代码不允许我运行它。 Does someone have any idea?有人有什么想法吗?
UPDATE: just solved it by merging both objects更新:刚刚通过合并两个对象来解决它
const filteredProducts = Object.assign(
...Object.keys(products)
.filter(key => products[key].Artikelgrupp === data.Artikelgrupp)
.map(k => ({
[k]: {...products[k], ...data}
}))
)
You have invalid JavaScript.您的 JavaScript 无效。 If you want a nested object, you need { something: { } }
and if you want to use a computed property name, you need to surround it with []
.如果你想要一个嵌套对象,你需要{ something: { } }
,如果你想使用计算属性名称,你需要用[]
将它括起来。
So, this will work所以,这会起作用
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);
};
}
If I understand correctly, you are wanting to obtain a single object which:如果我理解正确,您想获得一个单一的对象:
products
where a Artikelgrupp
field does not match data.Artikelgrupp
and,排除Artikelgrupp
字段与数据不匹配的products
所有值对象data.Artikelgrupp
和,Beskrivning
, kategori
, etc, from your data
object are merged/copied into the product values of the resulting object特定的字段Beskrivning
, kategori
等,从data
对象被合并/复制到所产生的对象的乘积值One solution to this would be as对此的一种解决方案是
/* 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
}
};
}, {})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.