Как вы можете разделить массив объектов в Javascript на две предопределенные переменные в ES6? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть массив, содержащий один объект этой формы: Array = [{type: type, message: message}]

Я продолжаю получать ошибки ESLint, требующие использования деструктуризации объекта и деструктуризации массива.

В настоящее время мой код выглядит следующим образом:

let type=null;
let message=null;
if (data.length > 0) {
  ({ type, message } = data[0]);
}

Пока это работает, и мои переменные назначены правильно, однако я все еще получаю сообщение "Использовать деструктуризацию массива" из ESLint.

Любая помощь с этим будет оценена.Спасибо

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Путь Фейли это хорошо.Вы также можете использовать значения по умолчанию при деструктурировании:

function test(label, data) {
  // 1 -----------------------------vvvvv
  let [{type = null, message = null} = {}] = data;
  // 2 -----^^^^^^^---------^^^^^^^
  console.log(label, type, message);
}
test("test1: ", []);
test("test2: ", [{type: "t"}]);
test("test3: ", [{type: "t", message: "m"}]);

Это работает, потому что если data.length равно 0, data[0] равно undefined, и, таким образом, запускает использование значения по умолчанию {} (1) длячасть массива этого;в пределах части объекта мы используем null (2) для обработки любых пропущенных значений в объекте.

0 голосов
/ 03 октября 2018

EsLint хочет, чтобы вы написали

let type = null;
let message = null;
if (data.length > 0) {
  [{ type, message }] = data;
}

, который разрушает первый элемент итерируемого data в цель {type, message}.(Другие элементы игнорируются).

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

const [{type, message} = {type:null, message:null}] = data;

или также

const [{type = null, message = null} = {}] = data;
0 голосов
/ 03 октября 2018

Вы можете деструктурировать массив:

let type=null;
let message=null;
if (data.length > 0) {
  [{ type, message }] = data;
}

Код выше является более короткой версией:

[ firstElement ] = data;  // array destructruring
({ type, message } = firstElement);  // object destructuring
...