我有一个像这样的对象:
Object {v: 1, b: 1, n: 1, m: 1, c: 2, d: 3}
我正在尝试收集具有相同值的键并生成一个数组(在本例中为[v, b, n, m]
。
因此,如果我知道1
,我怎样才能在数组中获得v,b,n,m
?
答案 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
循环。
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;
花式? Object.keys
和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));
&#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);