javascript - 如何修改复杂数组中的对象?
问题描述
我有这样一个数据结构:
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 的新对象。有人可以帮我吗?
解决方案
您也可以在 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);
});
然后,您将确定您获得了所需的数据。
推荐阅读
- rust - 泛型结构的过滤器向量
- firebase - 从 NodeMCU 发送到 Firebase 时如何构造我的传感器数据?
- javascript - 使用 Angular 使用 Blob 显示图像列表
- java - 在不更改应用程序服务器属性的情况下更改 TLS
- android - 将调试签名的应用上传到 Playstore 以进行应用内计费测试
- android - 如何使用 Espresso 测试片段是否可见
- javascript - 使用 jest 在另一个函数中测试一个函数
- c# - 创建一个字典,键为列表(字符串)
- c - Cygwin 中的 can.h 和 can/raw.h 头文件在哪里?
- python - 从解密的文本中获取正确的输出