获取对象值而不循环

时间:2013-05-24 08:59:25

标签: javascript jquery object

我有以下对象:

var input = {
  'foo': 2,
  'bar': 6,
  'baz': 4
};

是否可以在不循环的情况下从此对象获取值?

可以使用jQuery

预期结果:

var output = [2, 6, 4];

5 个答案:

答案 0 :(得分:8)

var arr = $.map(input,function(v){
 return v;
});

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

答案 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)