javascript - JavaScript .each 函数保存最后一个值
问题描述
我有一个带有循环的函数,可以将数据保存在对象中,foreach 循环正在保存最后一个值
var n = new Array();
var weight = new Array();
var obj = {};
var as = [];
// var temp;
$("input:checked").each(function(){
temp = this.value;
// n.push(this.value);
obj['ids'] = temp;
obj['weight']= $("#weight"+temp).val();
as.push(obj);
delete temp;
});
console.log(as);
console.log 的结果是
(5) [{…}、{…}、{…}、{…}、{…}]
0:{ids:“298”,重量:“1.00”}
1:{ids:“298”,重量:“1.00”}
2:{ids:“298”,重量:“1.00”}
3:{ids:“298”,重量:“1.00”}
4:{ids:“298”,重量:“1.00”}
这应该是
(5) [{…}、{…}、{…}、{…}、{…}]
0: {ids: "on", weight: "undefined"}
1:{ids:“4”,重量:“1”}
2:{ids:“5”,重量:“2”}
3:{ids:“6”,重量:“3”}
4:{ids:“298”,重量:“4”}
解决方案
您在每次调用中添加对对象的相同引用。push()
通过在循环内移动,在每次迭代中创建一个新对象var obj = {};
。此外,如果你temp
在循环中定义你不需要使用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);
话虽如此,您可以map()
改用以下方法来改进逻辑:
let as = $("input:checked").map(function() {
let temp = this.value;
return {
ids: temp,
weight: $("#weight" + temp).val()
}
}).get();
console.log(as);
推荐阅读
- php - 从字符串中选择捕获的值
- angularjs - 角度代码未执行
- android - Cognito "redirect URL" using Android SDK
- docx - Pandoc Word to Dokuwiki heading conversion
- c# - How to unit test a vsix project?
- excel - Excel 2013:行索引数组的多个搜索条件
- javascript - Cookie expiration date equals -1
- php - 条带将元数据传递给客户条带时出现无效哈希错误
- linux - 无法在 Shell 脚本中保存进程的进程 ID
- angular - Angular 6 库