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

Я пытаюсь создать функцию с именем addToList, которая перебирает все var фильмы и помещает все в мой пустой массив var movieList. Вот мой код ...

    var movies = [
      { title: 'matrix', id: 0},
      { title:'the dark knight', id: 1},
      { title:'a beautiful mind', id: 2},
      { title:'american pie', id: 3}
    ]

    function addToList(movies) {
      var movieList = {};

      for(var key in movies)
        movieList.push(movies[key])
      }

      return movieList

    addToList(movies)

Я пытаюсь получить возврат:

[
  '{title:matrix, id:0}',
  '{title:the dark knight, id:1}',
  '{title:a beautiful mind, id:2}',
  '{title:american pie, id:3}'
]

Я не уверен, почему мой код не работает.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Используя map(), JSON.stringify() и .replace(/"|'/g,""), вы можете получить желаемый результат.

var movies = [
    { title: 'matrix', id: 0},
    { title:'the dark knight', id: 1},
    { title:'a beautiful mind', id: 2},
    { title:'american pie', id: 3}
  ];

  movies = movies.map(o=>JSON.stringify(o).replace(/"|'/g,""))

  console.log(movies)

Ваш код не работает, потому что вы пытаетесь вставить объект, если вы измените movieList = {} на movieList = [], который будет работать, но не как ваш желаемый вывод, который представляет собой массив строк, подобный JSON . Вот почему вы можете превратить каждый объект в JSON, а затем удалить кавычки, как ваш пример.

var movies = [
    { title: 'matrix', id: 0},
    { title:'the dark knight', id: 1},
    { title:'a beautiful mind', id: 2},
    { title:'american pie', id: 3}
  ]

  function addToList(movies) {
    var movieList = [];

    for(var key in movies){
      movieList.push(movies[key])//<-- objects into an array
    }

    return movieList
}

  console.log(addToList(movies))
0 голосов
/ 10 сентября 2018

В вашем коде есть пара синтаксических ошибок, оператор возврата должен быть внутри функции, а также никогда не использовать for..in для итерации массива

var movies = [{
    title: 'matrix',
    id: 0
  },
  {
    title: 'the dark knight',
    id: 1
  },
  {
    title: 'a beautiful mind',
    id: 2
  },
  {
    title: 'american pie',
    id: 3
  }
]

function addToList(movies) {
  var movieList = [];
  movies.forEach((item) => {
    movieList.push(JSON.stringify(item))

  })
  return movieList
}


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