如何遍历变量数组并获取每个元素对应的原始变量名?
问题原因
你编写的代码无法得到预期输出的核心原因如下:
- 数组
errorArray中存储的是firstOne、secondOne、thirdOne的值,没有保留任何和原变量的名称信息。 - 代码中
Object.keys({ element })[0]使用了ES6对象属性简写规则,等价于创建了{ "element": element }的对象,因此永远只能拿到键名element,和原变量名没有关联。
实现方案
方案1:构造包含变量名的对象数组(推荐)
这种方案可读性和可维护性最高,适合绝大多数场景:
let firstOne = true; let secondOne = true; let thirdOne = false; // 数组中存入变量名和对应值绑定存储 let errorArray = [ { name: 'firstOne', value: firstOne }, { name: 'secondOne', value: secondOne }, { name: 'thirdOne', value: thirdOne } ]; let resultArr = [] errorArray.forEach((item) => { if (item.value) { console.log(item.name); // 推送至其他数组直接执行push操作即可 resultArr.push(item.name) } });
方案2:用对象包裹所有变量,遍历键值对
如果变量数量较多,可以将变量统一放在同一个对象下管理,遍历效率更高:
// 所有变量放在同一对象管理 const errorConfig = { firstOne: true, secondOne: true, thirdOne: false } Object.entries(errorConfig).forEach(([variableName, variableValue]) => { if (variableValue) { console.log(variableName) } })
内容的提问来源于stack exchange,提问作者Andy Hitchings
相关产品推荐
相关产品推荐

