Создание массива из объекта javascript - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть такой объект JavaScript

server1:[38,1,2,7]
server2:[6,2,1,4
server3:[160,30,21,20]

Я хочу вставить элементы этих объектов в массив, подобный этому

data1=[
  [
    {name:"Success", y:38},
    {name:"Failure", y:1},
    {name:"Aborted", y:2},
    {name:"Unstable", y:7}
  ],
  [
    {name:"Success", y:6},
    {name:"Failure", y:2},
    {name:"Aborted", y:1},
    {name:"Unstable", y:4}
  ],
  [
    {name:"Success", y:160},
    {name:"Failure", y:30},
    {name:"Aborted", y:21},
    {name:"Unstable", y:20}
  ]
]

Первый элемент ключа JavaScriptобъект - успех, второй элемент - неудача, третий элемент - нестабилен, а четвертый элемент прерван. Есть ли способ, которым я могу это сделать?Любая помощь будет оценена

Ответы [ 3 ]

5 голосов
/ 30 апреля 2019

Вы можете использовать метод Object.values для получения значений объекта и метод Array#map для генерации массива.

const data = {
  server1: [38, 1, 2, 7],
  server2: [6, 2, 1, 4],
  server3: [160, 30, 21, 20]
}


let res = Object.values(data).map(([s, f, a, u]) => [{
    name: "Success",
    y: s
  },
  {
    name: "Failure",
    y: f
  },
  {
    name: "Aborted",
    y: a
  },
  {
    name: "Unstable",
    y: u
  }
])

console.log(res);
1 голос
/ 30 апреля 2019

Вы можете взять массив для имен и отобразить внешние и внутренние значения.

var server1 = [38, 1, 2, 7],
    server2 = [6, 2, 1, 4],
    server3 = [160, 30, 21, 20],
    names = ["Success", "Failure", "Aborted", "Unstable"],
    result = [server1, server2, server3]
        .map(s => names.map((name, i) => ({ name, y: s[i] })));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 30 апреля 2019

Если вы предпочитаете хорошие старые циклы подходу функциональной карты (), используйте это:

var test = {
    server1: [38, 1, 2, 7],
    server2: [6, 2, 1, 4],
    server3: [160, 30, 21, 20]
};

function makeArray(input) {
    var array = [];
    for (var server in input) {
        array.push([
            {name: "Success", y : input[server][0]},
            {name: "Failure", y : input[server][1]},
            {name: "Aborted", y : input[server][2]},
            {name: "Unstable", y : input[server][3]},
        ]);
    }
    return array;
}

console.log(makeArray(test));
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...