我有以下对象:
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;
});
如果没有循环,这根本不可能。(还)没有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()
以下方法循环:
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 );
请注意:
这是一项实验技术
由于该技术的规格尚未稳定,请查看兼容性表以了解在各种浏览器中的使用情况。另请注意,随着规范的变化,实验技术的语法和行为可能会在未来版本的浏览器中发生变化。
因此,目前它仅支持 Chrome 和 Firefox。
我不知道你为什么想要没有 loop 。这是我的解决方案
JSON.stringify( input ).replace(/"(.*?)"\:|\{|\}/g,'' ).split(',')
它打印[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)