javascript - 对象值不更新 javascript
问题描述
const displayDataTypes = [];
const TypeMap = {
data: ['type2', 'type3'],
};
const Type = {
title: 'Type',
values: [
{ label: 'Type-1', value: 'type1', disabled: false },
{ label: 'Type-2', value: 'type2', disabled: false },
{ label: 'type-3', value: 'type3', disabled: false },
{ label: 'type-4', value: 'type4', disabled: false },
{ label: 'type-5', value: 'type5', disabled: false }
]
};
const TypesSelection = TypeMap['data'];
Type.values.forEach((item) => {
const tmp = Object.create(item);
TypesSelection.forEach((type) => {
if (tmp.value !== type) {
tmp.disabled = true;
}
});
displayDataTypes.push(tmp);
});
console.log(displayDataTypes);
在上面的代码中,每个对象属性 disabled 都变为 true。我需要 type2 和 type3 应该是 false 并且 rest 应该是 true 因为 TypeMap - 数据。所以输出应该是
[
{ label: 'Type-1', value: 'type1', disabled: true },
{ label: 'Type-2', value: 'type2', disabled: false },
{ label: 'type-3', value: 'type3', disabled: false },
{ label: 'type-4', value: 'type4', disabled: true },
{ label: 'type-5', value: 'type5', disabled: true }
]
解决方案
尝试使用以下Array.map
功能:
const output = Type.values.map(v => {
v.disabled = !TypesSelection.includes(v.value);
return v;
})
console.log(output)
这不仅更小,而且更具可读性。
了解有关该Array.map
功能的更多信息:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
推荐阅读
- google-cloud-platform - 如何检查最新的 Cloud Run 修订版是否已准备好投放
- java - 将布局文件添加到类(Java Android Studio)
- hibernate - Springboot/Hibernate:配置属性不是从环境设置中获取的
- bash - 将标准输出捕获到变量并获取前台管道的退出状态
- html - 覆盖 Outlook 暗模式按钮背景
- c# - Protobuf-net 使用嵌套数据反序列化时出现无效的线型异常(C++ 到 C#)
- algorithm - 数据结构:用另一个 BST 的值返回相同形状的 BST
- google-bigquery - 白名单 BigQuery IP 地址
- r - 如何在点图ggplot中删除x轴(见图)
- laravel - 多对多到 MorphToMany 关系