首页 > 解决方案 > 如何修改复杂数组中的对象?

问题描述

我有这样一个数据结构:

data: [
       {
         current: true,
         id: "3d6266501370d",
         name: "Option",
         items: [
                     {
                       hidden: false,
                       id: "ed716c12bf8f3",
                       data: "ffff",
                      }
                    ],
         selected_queries:[
                        {
                          id: 67896,
                          data: "ff",

                       }
          ]
        },    
     ]

我需要编辑每个对象的隐藏字段,其他值我需要保持原样。我创建了这样的代码:

export const editField = (id, status) => {
  return new Promise((res) => {
    const data = getData();
    const newData = data.map(dataItem => {
      if (dataItem.current) {
        const newDataItem = dataItem.items.map(item => {
          if (item.id === id) {
              return Object.assign({}, item, {
                ...item,
                hidden: status,
              });
          } else {
            return item;
          }
        })
        return newDataItem;
      } else {
        return dataItem;
      }
    })
    res(newData);
  });
}

但我得到了 null 的新对象。有人可以帮我吗?

标签: javascript

解决方案


您也可以在 Promise 中转换getData() ,例如:

var promiseData = new Promise(function(resolve, reject) {
  resolve(getData());
});

promiseData.then(function(data) {
  // THE REST OF YOUR CODE USING "data"
}).catch(function(error){
  console.error(error);
});

然后,您将确定您获得了所需的数据。


推荐阅读