Вы добавляете одинаковую ссылку к объекту при каждом вызове push()
. Создайте новый объект в каждой итерации, перемещая var obj = {};
внутри l oop. Кроме того, если вы определяете temp
в l oop, вам не нужно использовать delete temp
- это не значит, что оно в любом случае пригодится в этом случае.
var n = [], weight = [], as = [];
$("input:checked").each(function() {
var temp = this.value;
var obj = {};
obj['ids'] = temp;
obj['weight'] = $("#weight" + temp).val();
as.push(obj);
});
console.log(as);
При этом вы можно улучшить логику c, используя вместо нее map()
:
let as = $("input:checked").map(function() {
let temp = this.value;
return {
ids: temp,
weight: $("#weight" + temp).val()
}
}).get();
console.log(as);