Избегайте непоследовательностей внутри функции карты - PullRequest
0 голосов
/ 10 марта 2020

У меня есть массив, через который я хочу l oop, поэтому я использую прототип карты. Внутри callbackfn каждого элемента я хочу запустить несколько выражений.

const test = [{ name: "foo", value: "1" }, { name: "bar", value: "2" }, { name: "x", value: "3" }]
  let found = false;
  test.map(name => (
    console.log(name.name),
    console.log(name.value),
    found = true
  ));

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

Как я должен поместить несколько выражений в функцию карты?

Ответы [ 3 ]

1 голос
/ 10 марта 2020

Как мне поместить несколько выражений в функцию карты?

Использовать фигурные скобки:

test.map(name => {
   console.log(name.name)
   console.log(name.value)
   found = true
});

Хотя map не выглядит правильный выбор для этого, как указали другие - похоже, вы должны использовать filter, но те же правила применяются для нескольких операторов.

Обычные скобки - это сокращение для «подразумеваемого возврата», где вы можете опустить {} и ключевое слово return, если ваша функция содержит только одно выражение. Фактически, вы также можете опустить скобки тоже!

Так что они эквивалентны:

test.filter(name => {
    let found = false
    if(name==='sarah'){
       found = true
    }
    return found 
}

test.filter(name => name === 'sarah')
0 голосов
/ 10 марта 2020

В вашем коде есть синтаксическая ошибка, поскольку правильный синтаксис для функции со стрелкой из нескольких строк кода:

(params) => {
  // Your code here with semicolon at line end
}

Обратите внимание на использование фигурных скобок вместо скобок и точки с запятой вместо запятая в конце строки.

Кроме того, поскольку вы ищете какое-то значение внутри и не заботитесь о его позиции, вы можете вместо этого использовать Array.some () . Это будет более эффективно, так как останавливается на первом результате:

let found = test.some((name) => {
  if (your condition here) {
    return true;
  } else {
    return false;
  }
});
0 голосов
/ 10 марта 2020

Для полноты из моего комментария: используйте forEach и то, что упоминали другие люди.

const test = [{ name: "foo", value: "1" }, { name: "bar", value: "2" }, { name: "x", value: "3" }]
  let found = false;
  test.forEach(name => {
    console.log(name.name);
    console.log(name.value);
    found = true;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...