Почему я получаю ошибку при создании массива объектов? - PullRequest
1 голос
/ 21 сентября 2019

Моя цель состоит в том, чтобы создать массив объектов JavaScript, и хотелось бы, чтобы выходные данные имели следующий формат:

journal = [
  {
    events: ["work", "ice cream", "cauliflower",
      "lasagna", "touched tree", "brushed teeth"
    ],
    squirrel: false
  },
  {
    events: ["weekend", "cycling", "break", "peanuts",
      "soda"
    ],
    squirrel: true
  }

];

Цель состоит в том, чтобы построить из следующей функции оба заданных параметра (события и белка)

let journal = [];

function addEntry(events, squirrel) {
  ...........
  ...........
}

Я написал код ниже, и вывод выдает ошибку: «false - это не функция».Как я могу исправить эту ошибку и получить ожидаемый результат?Спасибо

let journal = [];

function addEntry(events, squirrel) {
  journal.push(
    ({
      events: ["work", "ice cream", "cauliflower", "lasagna", "touched tree", "brushed teeth"]
    }, false)
    ({
      events: ["weekend", "cycling", "break", "peanuts", "soda"]
    }, true)
  )
}
addEntry(console.log(journal));

Ответы [ 2 ]

2 голосов
/ 21 сентября 2019

Когда вы нажимаете несколько значений с помощью push, вам нужно разделить их на ,.здесь у вас есть (obj,false)() в этом формате, так как оператор запятой возвращает последний операнд, так что вы фактически делаете false()

let journal = [];

function addEntry(events, squirrel) {
  journal.push(
    ({
      events: ["work", "ice cream", "cauliflower", "lasagna", "touched tree", "brushed teeth"]
    }, false),
    ({
      events: ["weekend", "cycling", "break", "peanuts", "soda"]
    }, true)
  )
}
addEntry(journal);
console.log(journal)

Здесь, если вы хотите передать только объект, вам не нужно переносить (), а также если вам нужно более одного свойства в вашем объекте, вы можете добавить его внутрь объекта,как это

 {
   key: value,
   key: value
 }

let journal = [];

function addEntry(events, squirrel) {
  journal.push({...events,squirrel})
}
addEntry({
    events: ["work", "ice cream", "cauliflower", "lasagna", "touched tree", "brushed teeth"]},true);
addEntry({
    events: ["weekend", "cycling", "break", "peanuts", "soda"]},false)
console.log(journal)
0 голосов
/ 21 сентября 2019

Ваш синтаксис в неверен

  1. Вы передали результат метода console.log в метод addEntry, это не имеет значения

  2. Вы использовали () в своем методе addEntry ({ events: [...] }, false), это синтаксическая ошибка, вам нужно выдвинуть объект (обертку на {}, например: ({ events: [...], squirrel : false })

Это пример кода:

let journal = [];

function addEntry(events) {
  events.forEach(event => journal.push(event));
}

let events = [
    {
        events: ["work", "ice cream", "cauliflower",
          "lasagna", "touched tree", "brushed teeth"
        ],
        squirrel: false,
    },
    {
        events: ["weekend", "cycling", "break", "peanuts",
          "soda"
        ],
        squirrel: true
    }
]

addEntry(events);
console.log(journal);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...