javascript - 根据另一个数组中值的存在向对象数组添加属性
问题描述
我有一个数组要与主数组一起检查,
const arrayToCheck = ['a', 'b', 'c', 'd'];
这是主数组,
const mainArray = [ {name:'alex', code: 'c'},
{name:'jack', code: 'd'},
{name:'john', code: 'n'},
{name:'mike', code: 'l'}
]
我想根据 arrayToCheck 中的值向 mainArray 添加一个状态属性,其键为“启用”或“禁用”。
所以输出应该是
[ {name:'alex', code: 'c', status: 'enable'},
{name:'jack', code: 'd', status: 'enable'},
{name:'john', code: 'n', status: 'disable'},
{name:'mike', code: 'l', status: 'disable'}
]
我已经尝试了 map 和一些来获得所需的输出,但没有成功,
这是我尝试过的,
const output = this.mainArray.map( (fil, i) => {
return arrayToCheck.some( s => {
if (s === fil.Code) {
this.mainArray[i].Status = 'enable'
} else {
this.mainArray[i].Status = 'disable'
}
})
});
解决方案
您可以使用map
method withincludes
和 spread syntax ...
。此解决方案返回新的对象数组并且不修改原始数组。
const arrayToCheck = ['a', 'b', 'c', 'd'];
const mainArray = [ {name:'alex', code: 'c'}, {name:'jack', code: 'd'}, {name:'john', code: 'n'}, {name:'mike', code: 'l'}]
const result = mainArray.map(e => ({...e, status: arrayToCheck.includes(e.code) ? "enable" : "disable"}))
console.log(result)
推荐阅读
- java - 如何在函数中包含代码
- html - 相同的字体大小,不同的渲染大小
- python-3.x - import kivy 在 pycharm 中返回错误
- android - “资源”不包含“Xml”的定义
- python - 以相同间距将字符串定位到 x 轴
- python - 如何通过使用 BeautifulSoup 抓取 IP 地址并输出到 CSV?
- sparql - 如何有效地通过 sparql 从 freebase 中搜索多跳三元组
- php - 如果参数有值则更新记录 - SQL、PHP
- mysql - 在 MY SQL 中过滤和连接表
- c++ - CRTP:为什么获取派生类的嵌套类型和嵌套方法之间存在差异?