Ответ 1
var arr = $.map(input,function(v){
return v;
});
Демо -->
http://jsfiddle.net/CPM4M/
У меня есть следующий объект:
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];
});
Я не знаю, почему вы хотите без цикла. здесь мое решение
JSON.stringify( input ).replace(/"(.*?)"\:|\{|\}/g,'' ).split(',')
напечатайте [2, 6, 4]
. Я не тестировал другие значения json
Вы можете получить значения из этого объекта без цикла с помощью Object.values()
, например:
var output = Object.values( input );
console.log( output ); // [2, 6, 4]
DEMO:
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
var output = Object.values( input );
console.log( output );
var input = {
'foo': 2,
'bar': 6,
'baz': 4
};
var newArr = new Array;
$.each(input,function(key,value) {
newArr.push(value);
});
alert(newArr)