[英]filtering object and modify properties
我有一個新手問題,我試圖一遍又一遍地閱讀手冊,但無法弄清楚。
所以我有這個代碼:
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);
};
}
如果我理解正確,您想獲得一個單一的對象:
Artikelgrupp
字段與數據不匹配的products
所有值對象data.Artikelgrupp
和,Beskrivning
, kategori
等,從data
對象被合並/復制到所產生的對象的乘積值對此的一種解決方案是
/* 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.