javascript - 根据其他数组值将字符串映射到数组的最佳方法
问题描述
给定一个数组:
var arrOfObj = [{
name: 'eve',
col1 : 1,
col2 : 0,
col3 : 1
}, {
name: 'john',
col1 : 1,
col2 : 1,
col3 : 0
}, {
name: 'jane',
col1 : 0,
col2 : 1,
col3 : 1
}];
如果它们是 1,我需要在数组中有一个包含列 col1、col2、col3 名称的字符串的字段。示例结果是:
var arrOfObj = [{
name: 'eve',
col1 : 1,
col2 : 0,
col3 : 1,
account : "col1,col3"
} //etc
}]
我目前可以通过
var result = arrOfObj.map(function(o) {
o.account = ""
if (o.col1 > 0) {o.account = o.account + "col1,"} ;
if (o.col2 > 0) {o.account= o.account + "col2,"} ;
if (o.col3 > 0) {o.account= o.account + "col3,"} ;
o.account = o.account.slice(0, -1);
return o;
})
console.log(result)
但作为 JS 的新手,这感觉效率低下。我的实际数组有十几个这样的列正在评估中。
编辑:在已接受答案的帮助下完成的产品:
var bool_cols = ["col1","col2","col3"]
data.forEach(x => {
x.services = Object.keys(x).filter (y => bool_cols.includes(x) && x[y] == 1).join (',');
})
我喜欢如何无限期地扩展过滤条件!
解决方案
怎么样
arrOfObj.forEach ( (x) => {
x.account = Object.keys(x).filter (y => x[y] == 1).join (',');
})
推荐阅读
- javascript - 如何在 HTML 画布中获取正确的鼠标坐标
- python - 使用 Python 使我的逻辑回归测试准确度更接近我的训练准确度
- python - 如何多处理 Api 发布请求
- c# - 避免重复插入数据库
- swift - NSPopover 打开后没有收到第一次点击
- sqlalchemy - Sqlalchemy-Marshmallow - 嵌套字段不显示任何数据
- scheme - 如何计算列表中某个元素的出现次数并生成一个新列表?
- python - sys.getsizeof 如何在幕后工作?
- javascript - 如何在 JavaScript 中对美元数字范围进行排序
- python - TypeError:“spacy.tokens.token.Token”类型的参数不可迭代