获取具有相同值的对象的键

Getting keys of an object that has same values

我有一个像这样的对象:

 Object {v: 1, b: 1, n: 1, m: 1, c: 2, d: 3}

我正在尝试收集具有相同值的键并生成一个数组(所以在这种情况下 [v, b, n, m]

所以如果我知道 1,我怎样才能在数组中得到 v,b,n,m

您可以使用Object.keys() to get key values of the object, then filter values based on your condition using filter()

var obj = {
    v: 1,
    b: 1,
    n: 1,
    m: 1,
    c: 2,
    d: 3
  },
  val = 1;

var res = Object.keys(obj).filter(function(v) {
  return obj[v] == val;
});

document.write('<pre>' + JSON.stringify(res, null, 4) + '</pre>');

性能?简单 for...in 循环。

var myObj = {v: 1, b: 1, n: 1, m: 1, c: 2, d: 3};

function collect (obj, value) {
  var arr = [];
  
  for (var key in obj)
    if (obj.hasOwnProperty(key) && obj[key] === value)
      arr.push(key);
  
  return arr;
}

console.log(collect(myObj, 1));

喜欢吗? Object.keys, and Array.prototype.filter.

var myObj = {v: 1, b: 1, n: 1, m: 1, c: 2, d: 3};

function collect (obj, value) {
  return Object.keys(obj).filter(key => obj[key] === value);
}

console.log(collect(myObj, 1));

使用 underscore.js 库,您可以执行以下操作

var object = {v: 1, b: 1, n: 1, m: 1, c: 2, d: 3};

var output = _.map(object, function(value, key){
    if(value == 1){
        return key
    }
}).filter(function(value){
    return value; 
});

console.log(output);