首页 > 解决方案 > 过滤对象并修改属性

问题描述

我有一个新手问题,我试图一遍又一遍地阅读手册,但无法弄清楚。

所以我有这个代码:

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}
                }))
        )

标签: javascriptreactjsreact-redux

解决方案


您的 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);
  };
}


推荐阅读