Функция для преобразования списка вложенных объектов в массив - PullRequest
2 голосов
/ 24 апреля 2019

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

function listToArray(a) {
    let list = { value: 1, rest: { value: 2, rest: { value: 3, rest: null } } }; 
    let array = [list.val];
    while(list.rest !== null) {
        list = list.rest;
        array.push(list.val);   
    }
    return array;
}
console.log(listToArray(a));

Фактический результат: [undefined, undefined, undefined] Но я хочу бытьэто: [1,2,3]

1 Ответ

1 голос
/ 24 апреля 2019

Вы используете val, а не value:

function listToArray() {
  let list = {value: 1,rest: {value: 2,rest: {value: 3,rest: null}}};
  let array = [list.value];
  while (list.rest !== null) {
    list = list.rest;
    array.push(list.value);
  }
  return array;
}
console.log(listToArray());

В качестве альтернативы вы можете использовать простое рекурсивное решение:

let list = {value: 1,rest: {value: 2,rest: {value: 3,rest: null}}};

function listToArray(obj) {
  let result = [obj.value]
  if (obj.rest) result = result.concat(listToArray(obj.rest));
  return result;
}
console.log(listToArray(list));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...