Вы должны использовать функцию zip '. Вот пример, как ваша собственная функция zip может выглядеть как
def custom_zip(seq1, seq2):
it1 = iter(seq1)
it2 = iter(seq2)
while True:
yield next(it1), next(it2)
Проблема заключается не в методе 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 .
Вы должны копировать подписчика каждый раз. В противном случае вы каждый раз изменяете один и тот же объект. Просто используйте s = copy(Subscriber)
Клонирование объекта перед вводом в массив также решает проблему.
temp = clone(s);
subscribers.push(temp);
Получить https://www.npmjs.com/package/clone