Как получить ключи в массиве объектов в Vue.js - PullRequest
0 голосов
/ 07 декабря 2018

У меня создан массив объектов, и он выглядит так:

for(var i =0; i < this.test.length; i ++){
    var header = this.test[i].hdr;
    var insertData = [];

    switch(header){
        case 'date':
            insertData =  {date: "date"};
            break;
        case 'name':
            insertData =  {name: "name"};
            break;
        case 'age':
            insertData =  {age: "age"};
            break;
        case 'add':
            insertData =  {add: "add"};
            break;
    }
    this.hdrtxt.push(insertData);
}

Теперь, когда я пытаюсь получить ключи объекта, я использовал это:

Object.keys(this.hdrtxt);

результат:

(4) ["0", "1", "2", "3"]

Но вывод, который я хочу получить, таков:

(4) ["date", "name", "age", "add"]

Извините, я просто новичок в этом.Как я могу достичь своей цели?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы можете использовать Object.keys с Object.assign и распределить data в один объект, чтобы получить все ключи:

const data = [{ date: "date" }, { name: "name" }, { age: "age" }, { add: "add" }]

const result = Object.keys(Object.assign({}, ...data))

console.log(result)

Основная причина этого заключается в том, что вы имеете дело с массивом и Object.keys ожидает, что объект будет работать.

0 голосов
/ 07 декабря 2018

Во-первых, это может быть сделано намного проще при сокращении

const test = [{hdr: "date"}, {hdr: "name"}, {hdr: "age"}, {hdr: "add"}];

const results = test.reduce((result, item) => [...result, { [item.hdr]: item.hdr }], []);

// This logs, ["0", "1", "2", "3"] because it is an array and the keys are integers.
console.log(Object.keys(results));

// If you want the object keys for each item in the array try mapping each item in the array to it's first key in the keys for that item
console.log(results.map(item => Object.keys(item)[0]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...