我需要根据现有常量javascript对象中的某些键选择来创建一个数组
const EXISTING_CONSTANT_OBJECT = {
'fr': '10',
'es': '15'
'us': '10'
'uk': '7'
//and so on for many other iso country codes and UNPREDICTABLE key names
}
我需要能够使用值等于EXISTING_CONSTANT_OBJECT
的所有键创建一个数组(无需出于不变性而修改10
。)
例如,预期输出为
object_to_create_arr = ["fr","us"]
我尝试使用reduce
,但失败了。
注意:我可以使用ES6,通常更喜欢它,因为它通常更简洁。
答案 0 :(得分:8)
您可以使用Object.keys
和filter
const obj = { 'fr': '10','es': '15','us': '10','uk': '7'}
let final = Object.keys(obj).filter(key => +obj[key] === 10)
console.log(final)
此处+
用于隐式转换为数字,因为严格相等的'10'
和10不相同
答案 1 :(得分:0)
Object.keys(<object>)
将解决问题
顺便说一句:您的对象无效。您缺少一些逗号。
const EXISTING_CONSTANT_OBJECT = {
'fr': '10',
'es': '15',
'us': '10',
'uk': '7'
//and so on for many other iso country codes and UNPREDICTABLE key names
};
const keys = Object.keys(EXISTING_CONSTANT_OBJECT);
console.log(keys);
如果您只想获取值为10的键,就像添加.filter
const EXISTING_CONSTANT_OBJECT = {
'fr': '10',
'es': '15',
'us': '10',
'uk': '7'
};
const keysWith10 = Object.keys(EXISTING_CONSTANT_OBJECT).filter(k => EXISTING_CONSTANT_OBJECT[k] === '10');
console.log(keysWith10);
答案 2 :(得分:0)
使用<span>
使您处在正确的轨道上。如其他答案所述,您也可以使用reduce
(实际上可能更好)。
这是使用filter
reduce
答案 3 :(得分:0)
尝试一下
function createArr(obj){
let arr = [];
for (let key in obj) if (obj.hasOwnProperty(key) && String(obj[key]) === '10') arr.push(key);
return arr;
}
答案 4 :(得分:0)
Object.keys()
函数返回与您馈给该函数的对象的键对应的值的数组。例如:
let yourObject = { key1: value1, key2: value2, key3:value3}
let arr = Object.keys(yourObject)
console.log(arr) // Output: [ 'key1', 'key2', 'key3']
希望这会有所帮助!