词典:返回与该值配对的键的列表

时间:2019-06-18 17:41:50

标签: javascript

我正在定义一个函数,该函数返回与字典中的值配对的键的列表。

我可以打印第一个密钥,但是不会打印第二个或以后的密钥。我知道我应该列出一个清单,但我不知道该怎么做。

dict1 = {'cat' : 1, 'dog': 3, 'bird':4,'lizard':4,'hamster': 5 };

function keyList(dict, value) {

  for(x in dict)  

    if(dict[x] == value) 

    return x;
}

console.log(keyList(dict1, 4));

当我运行当前程序时,我只会看到鸟。 我希望代码同时返回鸟和蜥蜴。

4 个答案:

答案 0 :(得分:4)

只需遍历键并过滤掉那些键,其值不等于您传递的值。

dict1 = {'cat' : 1, 'dog': 3, 'bird':4,'lizard':4,'hamster': 5 }
    
function keyList(dict, value) {    
    return Object.keys(dict).filter(x => dict[x] === value);
}
    
console.log(keyList(dict1, 4))

答案 1 :(得分:1)

而不是立即返回,而是将值推入数组,然后返回数组

dict1 = {'cat' : 1, 'dog': 3, 'bird':4,'lizard':4,'hamster': 5 }

function keyList(dict, value) {
    let keys = [];
    for(x in dict)
    if(dict[x] == value){keys.push(x);}
    return keys;
}

console.log(keyList(dict1, 4))

答案 2 :(得分:1)

您可以使用Object.keys()来获取对象的键作为数组(例如def concat_short_words(s): result = "" for word in s.split(): if len(word) <= 4: result += word return(result) concat_short_words('The temperature is 22.625 ˚C') 'Theis˚C' )。

Array.filter()然后允许您指定要保留的项目。

在您的情况下,您想保留“值为4的键” ,因此要保留["cat", "dog", "bird", "lizard", "hamster"]

obj[key] === value

答案 3 :(得分:0)

您可以尝试这种方法。可能存在执行类似操作的过滤器功能:

dict1 = {'cat':1,'dog':3,'bird':4,'lizard':4,'hamster':5}

function getPropertiesByValue(object, value) {

Object.keys(object).forEach(key => {
  if (object[key] != value ) delete object[key];
});
return object;
}
alert(JSON.stringify(getPropertiesByValue(dict1, 4)));