javascript - javascript 检查数组的值是否作为对象中的键存在
问题描述
我需要检测一个数组的值是否作为键存在于对象中
我试过这种方式
var color = {
1: "Red",
2: "Blue",
3: "Yellow",
4: "Violet",
5: "Green",
7: "Orange"
};
var myColor = [3, 1];
for(const [key, value] of Object.entries(color)){
var bgIco = (myColor.includes(key)) ? '[' + key + ']' + value + ' - Yes' : '[' + key + ']' + value + ' - No';
console.log(bgIco);
}
但它总是回来不
如果在包含函数中我手动在对象中输入一个数字而不是键变量,那么它可以工作,我做错了什么?
解决方案
对象属性始终是字符串(或符号),即使在声明它们时它们看起来像数字:
const obj = { 1: 'foo' };
const key = Object.keys(obj)[0];
console.log(key === 1);
console.log(typeof key);
因此,myColor
首先将数组映射到字符串:
var myColor = [3, 1].map(String);
否则,includes
检查将失败(因为includes
需要===
- 或 SameValueZero - 才能找到匹配项)
推荐阅读
- json - 带有 jsonpaths 的 Redshift 复制 JSON 数据失败,并出现不正确的 json 格式错误
- javascript - 如何在 JSON 中提取嵌套值并初始化为 JS 变量
- python - Pycharm 快捷键
- python-3.x - ModuleNotFoundError:没有命名的模块
- python - 如何使用文件名作为输入?
- ios - “为 App Store 处理”是什么意思
- c++ - glew.h 和 glext.h 之间的函数原型不兼容
- javascript - 获取所有重叠特征的工具提示 D3
- javascript - 自动完成数据不会出现在引导模式中,而只会出现列表
- azure-ad-b2c - Azure AD B2C 验证自定义策略中的声明值