我有以下对象:
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
是否可以在不循环的情况下从此对象获取值?
可以使用jQuery
。
预期结果:
var output = [2, 6, 4];
答案 0 :(得分:8)
var arr = $.map(input,function(v){
return v;
});
答案 1 :(得分:6)
如果没有循环,这是不可能的。还没有Object.values()
方法来补充Object.keys()
。
在那之前,你基本上“陷入”以下构造:
var values = [];
for (var k in input) {
if (input.hasOwnProperty(k)) {
values.push(input[k]);
}
}
或者,在现代浏览器中(但当然仍然使用循环和匿名函数调用):
var values = Object.getOwnPropertyNames(input).map(function(key) {
return input[key];
});
答案 2 :(得分:3)
我不知道你为什么没有循环。在这里我的解决方案
JSON.stringify( input ).replace(/"(.*?)"\:|\{|\}/g,'' ).split(',')
打印[2, 6, 4]
。我没有测试其他json值
答案 3 :(得分:2)
您可以使用Object.values()
方法(例如:
var output = Object.values( input );
console.log( output ); // [2, 6, 4]
<强>样本:强>
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
var output = Object.values( input );
console.log( output );
请注意:
这是一项实验性技术
由于此技术的规范尚未稳定,请查看compatibility table以了解各种浏览器的使用情况。另请注意,随着规范的更改,实验技术的语法和行为可能会在未来版本的浏览器中发生变化。
所以,目前它支持Chrome&amp;仅限Firefox。
答案 4 :(得分:-2)
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
var newArr = new Array;
$.each(input,function(key,value) {
newArr.push(value);
});
alert(newArr)