获取对象值而不循环

hsz*_*hsz 11 javascript jquery object

我有以下对象:

var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};
Run Code Online (Sandbox Code Playgroud)

是否有可能从这个对象获取值而不循环它?

可以使用jQuery.

预期结果:

var output = [2, 6, 4];
Run Code Online (Sandbox Code Playgroud)

Moh*_*dil 8

var arr = $.map(input,function(v){
 return v;
});
Run Code Online (Sandbox Code Playgroud)

演示--> http://jsfiddle.net/CPM4M/

  • 那仍然是一个循环.一个不高效的,更重要的是 (6认同)
  • 还是一个循环...... (3认同)

Ja͢*_*͢ck 6

没有循环,这是不可能的.Object.values()还没有方法可以补充Object.keys().

在此之前,你基本上"陷入"以下构造:

var values = [];

for (var k in input) {
  if (input.hasOwnProperty(k)) {
    values.push(input[k]);
  }
}
Run Code Online (Sandbox Code Playgroud)

或者,在现代浏览器中(但当然仍然使用循环和匿名函数调用):

var values = Object.getOwnPropertyNames(input).map(function(key) {
    return input[key];
});
Run Code Online (Sandbox Code Playgroud)