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

时间:2016-01-29 03:24:22

标签: javascript arrays object javascript-objects

我有一个像这样的对象:

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

我正在尝试收集具有相同值的键并生成一个数组(在本例中为[v, b, n, m]

因此,如果我知道1,我怎样才能在数组中获得v,b,n,m

3 个答案:

答案 0 :(得分:1)

您可以使用 Object.keys() 获取对象的关键值,然后使用 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>');

答案 1 :(得分:1)

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

&#13;
&#13;
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));
&#13;
&#13;
&#13;

花式? Object.keysArray.prototype.filter

&#13;
&#13;
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));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用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);