Eli*_*Eli 5 javascript arrays ajax jquery
我有一个函数将行的值存储在数组 onkeyup 事件中。但是,在某些情况下,它会存储相同的行值,但数量和总数不同,但 ID 相同。我如何将它存储在数组中,以便只保存特定 id 的最新值集?我知道这有点令人困惑,但请看下图。感谢您的帮助。
我想保存ff:
{id:"1", qty:"4", price:"45", total:"180"}
{id:"2", qty:"3", price:"10", total:"30"}
{id:"3", qty:"50", price:"12", total:"600"}
{id:"4", qty:"60", price:"12", total:"720"}
Run Code Online (Sandbox Code Playgroud)
我的代码:
var arrayVar = [];
var data;
$(function(){
$('#tbl-po-list').on( 'keyup change' , 'input[type="number"]' ,function(){
$(this).parents('.info').find('.total').val($(this).val() * $(this).parents('.info').find('.price').val());
data = {
id: $(this).parents('.info').find('.prod-id').val(),
qty: $(this).val(),
price: $(this).parents('.info').find('.price').val(),
total: $(this).parents('.info').find('.total').val()
}
arrayVar.push(data);
for(var i = 0; i < arrayVar.length; i++){
console.log(arrayVar[i]);
}
});
});
Run Code Online (Sandbox Code Playgroud)
如果您替换以下内容,您就可以实现这一目标:
arrayVar.push(data);
Run Code Online (Sandbox Code Playgroud)
经过:
for(var i = 0; i < arrayVar.length; i++){
if (arrayVar[i].id === data.id) break; // found the same id!
}
arrayVar[i] = data;
Run Code Online (Sandbox Code Playgroud)
如果循环没有找到相同的id,则循环结束后i将等于arrayVar.length,因此分配将类似于推送。
另一方面,如果找到了id,则循环退出,并且赋值将替换之前该数组元素中的任何内容。
相同的更简洁的版本:
for(var i = 0; i < arrayVar.length && arrayVar[i].id !== data.id; i++);
arrayVar[i] = data;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |