Создайте массив JavaScript, используя значение из объектов JavaScript - PullRequest
0 голосов
/ 01 ноября 2018

Я новичок в JavaScript, у меня есть объект JavaScript

[{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}]

Я хочу создать массив как

[31, 23, 31, 49, 110, 115, 104]

Я ссылался на некоторые ссылки, но они показывают, как создать объект из массива, а не массив из объекта. Как получить значение ключа в объекте JSON?

Создание объекта javascript из значений массива

Создание объекта JavaScript из двух массивов

Я пытался так:

for (var i = 0; i < chartDataG4S.length; i++) {
        var data = chartDataG4S[i]['G4S'];
        console.log(data);
      }

Но это не создаст массив. Я застрял с этим, любая помощь приветствуется, заранее спасибо.

Ответы [ 6 ]

0 голосов
/ 01 ноября 2018

let chartDataG4S = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];

let result = chartDataG4S.map(o => Number(o.G4S));
console.log(result);

Функция map (), которая возникает из функционального программирования и присуща массивам JavaScript, облегчает доступ к значению свойства G4S каждого объекта, а именно к числовой строке. Функция Number () берет каждое строковое значение и преобразует его в число. Это возвращаемое значение затем добавляется в новый массив результатов.

Хотя map объекта Array () удобно использовать, учтите, что вы также можете получить те же результаты с явной итерацией, как указано ниже:

let chartDataG4S = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}]

let result = [];

for (var i=0; i in chartDataG4S; i++) {
  result.push(Number(chartDataG4S[i].G4S));
}


console.log(result);
0 голосов
/ 01 ноября 2018

Это в основном массив, и вы можете сделать это следующим образом.

let arr = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];
let arr1 =[];
for(let i=0; i<are.length; i++)
    arr1.push(are[i].G4S);
0 голосов
/ 01 ноября 2018

Вы можете сделать это простыми шагами, получить массивы всех значений объекта с помощью map и объединить все в одно, вот как.

let data = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S:"49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];

//step 1
let arr = data.map(da => Object.values(da)); // irrespective of keys
//step 2 
let result = arr.reduce((acc, val) => acc.concat(val), []);
console.log(result);
// in one liner.
console.log(data.map(da => Object.values(da)).reduce((acc, val) => acc.concat(val), []))
0 голосов
/ 01 ноября 2018

Попробуйте это

var newArray = [];  // New array declaration to be used to push the values.
var objArray = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];  // Your array of objects

objArray.forEach(function(elem){
    newArray.push(elem.G4S);
});
0 голосов
/ 01 ноября 2018

Вы можете просто использовать .map():

let data = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];

let result = data.map(({ G4S }) => Number(G4S));

console.log(result);
0 голосов
/ 01 ноября 2018

Используйте .map для извлечения свойства G4S в каждом объекте и приведения к числу, создавая новый массив в процессе:

const input = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];
const output = input.map(({ G4S }) => Number(G4S));
console.log(output);

Или, версия цикла for, если вы предпочитаете:

const input = [{G4S: "31"},{G4S: "23"},{G4S: "31"},{G4S: "49"},{G4S: "110"},{G4S: "115"},{G4S: "104"}];
const output = [];
for (let i = 0; i < input.length; i++) {
  output.push(Number(input[i].G4S));
}
console.log(output);
...