Как я могу поместить данные в Array с помощью javascript forEach? [Дубликат]

Запрос либо не возвращал строк, либо был ошибочным, поэтому возвращается FALSE . Измените его на

 , если (! $ Dbc || mysqli_num_rows ($ dbc) == 0)  

mysqli_num_rows : [ ! d4]

Возвращаемые значения

Возвращает TRUE при успешном завершении или FALSE при сбое. Для SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект результата.

10
задан pat 7 June 2012 в 14:15
поделиться

3 ответа

Проблема заключается не в методе push для Array.prototype, а в ваших привязках. Вы изменяете один и тот же объект s на каждой итерации вашего блока async.foreach, который на самом деле является тем же объектом, что и ранее определенный Subscriber.

Сначала вы должны перенести объявление s переменная к блоку foreach.

А также, если вы хотите создать объект со значениями по умолчанию, он должен быть function, который возвращает новый объект:

function Subscriber() {
  return {
    'userID':   '',
    'email':    '',
    'name':     '',
    'stage':    '',
    'poster':   false,
    'canEmail': false,
    'stage':    ''
  };
};

И тогда вы можете создать экземпляр объекта Subscriber следующим образом:

var s = Subscriber();

Подробнее см. этот ответ или Закрытие на MDN .

15
ответ дан Community 15 August 2018 в 20:56
поделиться
  • 1
    Какую новичковую ошибку я совершил. Это именно то, чего я не видел. – Ken Ingram 15 July 2018 в 23:18

Вы должны копировать подписчика каждый раз. В противном случае вы каждый раз изменяете один и тот же объект. Просто используйте s = copy(Subscriber)

-1
ответ дан Dmitry Laptev 15 August 2018 в 20:56
поделиться

Клонирование объекта перед вводом в массив также решает проблему.

temp = clone(s);
subscribers.push(temp);

Получить https://www.npmjs.com/package/clone

0
ответ дан Misa Lazovic 15 August 2018 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: