我有以下对象:
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
这个对象是否可以在不循环的情况下获取值?
可以使用 jQuery
。
期望的结果:
var output = [2, 6, 4];
我有以下对象:
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
这个对象是否可以在不循环的情况下获取值?
可以使用 jQuery
。
期望的结果:
var output = [2, 6, 4];
var arr = $.map(input,function(v){
return v;
});
演示 -->
http://jsfiddle.net/CPM4M/
如果没有循环,这是不可能的。目前还没有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];
});
Object.values()
现在已经成为所有最新浏览器(包括移动端)的标准,唯一的例外是已经过时的IE浏览器(所有版本)。 - StudocwhoObject.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 );
我不知道为什么你想要不用循环。这是我的解决方案:
JSON.stringify( input ).replace(/"(.*?)"\:|\{|\}/g,'' ).split(',')
it打印出[2, 6, 4]
。我没有测试其他JSON值。
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
var newArr = new Array;
$.each(input,function(key,value) {
newArr.push(value);
});
alert(newArr)
each
仍然是一个循环。 - hsz