Имеется ошибка: SyntaxError: неожиданный токен, ожидается "," - я пытаюсь вернуть массив, в котором присутствуют имя ключа: и временная метка: - PullRequest
1 голос
/ 04 августа 2020

Есть ошибка: SyntaxError: Неожиданный токен, ожидаемый "," - я пытаюсь вернуть массив, в котором присутствуют имя ключа: и временная метка :. нажав в новый массив, где действительны ключи, которые я использовал, но это возвращает мне и массив, где элементы не определены. пытаемся создать новый массив, в котором они не существуют, в новом массиве


     const newEvents = events.map(event => (event.name && event.timestamp) && {
        timestamp: event.timestamp,
        name: event.name,
      });

// Попытка вставить sh в массив здесь, когда присутствуют ключи name: и timestamp: // Но, получение неожиданной ошибки ","


      const newerEvents =[];
      for (const ele of events){
        (ele.name && ele.timestamp) && { newerEvents.push({name: ele.name, timestamp: 
        ele.timestamp}) }
      }

Любая помощь приветствуется, спасибо

1 Ответ

0 голосов
/ 04 августа 2020

Фигурные скобки здесь обрабатываются как литерал объекта вместо блока кода «короткого замыкания»:

(ele.name && ele.timestamp) && { /* this is an object, not a code block */ }

Вы можете исправить это одним из следующих способов:

  1. Опускание фигурных скобок {}:

    (ele.name && ele.timestamp) && newerEvents.push({name: ele.name, timestamp: ele.timestamp})
    
  2. an if (для случаев, когда вам нужно несколько операторов):

    //populate
    const events = [{timestamp: new Date().getTime(), name: "hi"}];
    
    const newEvents = events.map(event => (event.name && event.timestamp) && {
            timestamp: event.timestamp,
            name: event.name,
          });
    const newerEvents = [];
    for (const ele of events) {
        if (ele.name && ele.timestamp) {
            newerEvents.push({name: ele.name, timestamp: ele.timestamp});
        }
    }
    
    //output
    console.log(newerEvents);
...