获取具有相同值的对象的键
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);
我有一个像这样的对象:
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);