2017-01-24 2 views
-2

У меня эти данные. Как видите, есть 4 кода, и каждый код имеет другое значение.Javascript получить различные значения в массиве

Вот данные:

{ 
    "code": { 
     "1": 20, 
     "2": 1, 
     "3": 2, 
     "10": 1 
    } 
} 

var totals = [] 

Что мне нужно сделать, это поместить их в массив итоговых поэтому окончательный результат будет выглядеть следующим образом:

[20, 1, 2, 1]

Как это сделать?

+2

Вы можете цикл над объектом – AshBringer

ответ

-1

Как this.push каждые элементы obj.code с использованием for in цикла.

var obj = { 
 
     "code": { 
 
      "1": 20, 
 
      "2": 1, 
 
      "3": 2, 
 
      "10": 1 
 
     } 
 
    }; 
 
    var code = obj.code; 
 
    var totals = []; 
 
    for(x in code){ 
 
    totals.push(code[x]); 
 
    } 
 
console.log(totals);

+0

может кто-нибудь объясняет, почему вниз вниз? Это плохая привычка к downvote на рабочий ответ. –

2

С ES2017, вы можете использовать Object.values:

var obj = { 
    "code": { 
     "1": 20, 
     "2": 1, 
     "3": 2, 
     "10": 1 
    } 
}; 

Object.values(obj.code); 

Если вы используете старую версию, вы можете использовать for цикл, как указано в ответе Энтони, или использовать lodash или undesrcore.

-1

Вы можете перебрать ключи и добавить значения в массив:

var total = []; 
for(var key in a.code) { 
    total.push(a.code[key]); 
} 
+0

Я предлагаю добавить 'если (a.code.hasOwnProperty (ключ)' перед отправкой значение, чтобы избежать добавления ненужных значений. – GilZ

0

Использование Object.keys() ИЛИ Object.values()

var obj = { 
 
    "code": { 
 
    "1": 20, 
 
    "2": 1, 
 
    "3": 2, 
 
    "10": 1 
 
    } 
 
}; 
 

 
var totals = []; 
 

 
Object.keys(obj.code).forEach(function(key){ 
 
    totals.push(obj.code[key]); 
 
}); 
 

 
console.log(JSON.stringify(totals)); 
 

 
console.log(JSON.stringify(Object.values(obj.code)));

1

Используйте Array#map и Object.keys методы.

var data = { 
 
    "code": { 
 
    "1": 20, 
 
    "2": 1, 
 
    "3": 2, 
 
    "10": 1 
 
    } 
 
}; 
 

 
var totals = Object.keys(data.code).map(function(k) { 
 
    return data.code[k]; 
 
}) 
 

 
console.log(totals);

0

Для поддержания стабильного результата, необходимо отсортировать ключи заранее.

var data = { code: { 1: 20, 2: 1, 3: 2, 10: 1 } }, 
 
    result = Object.keys(data.code).sort(function (a, b) { 
 
     return a - b; 
 
    }).map(function (k) { 
 
     return data.code[k]; 
 
    }); 
 

 
console.log(result);

0
var obj = { 
    "code": { 
    "1": 20, 
    "2": 1, 
    "3": 2, 
    "10": 1 
    } 
}; 
var arr = Object.keys(obj.code).map(function (k) { return obj.code[k]; }); 
Смежные вопросы