javascript - 如何使用 javascript 获取数组中特定 id 的最后一个值?

标签 javascript jquery arrays ajax

我有一个函数将行的值存储在数组 onkeyup 事件中。但是,在某些情况下,它会存储相同的行值,但数量和总数不同,但 ID 相同。我将如何以一种只保存特定 id 的最新值集的方式将它存储在数组中?我知道这有点令人困惑,但请看下图。感谢您的帮助。

enter image description here

我要保存 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"}

我的代码:

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]);
      }

    });   

  });

最佳答案

如果您替换:

arrayVar.push(data); 

通过:

for(var i = 0; i < arrayVar.length; i++){
    if (arrayVar[i].id === data.id) break; // found the same id!
}
arrayVar[i] = data;

如果循环没有找到相同的 id,那么在循环之后 i 将等于 arrayVar.length,因此赋值将像推一样。

如果找到 id,则循环退出,赋值将替换之前该数组元素中的任何内容。

一个更简洁的版本:

for(var i = 0; i < arrayVar.length && arrayVar[i].id !== data.id; i++);
arrayVar[i] = data;

关于javascript - 如何使用 javascript 获取数组中特定 id 的最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040483/

相关文章:

javascript - jQuery/Grails-在文本框更改时检测表中的行

javascript - 如何将选项卡设置为禁用/启用

arrays - J:列表项之间的符号变化次数

javascript - 如何根据动态变量将元素插入数组

java - 检查 Field[] 是否包含名称为 XXX 的字段

javascript - 初始砖石荷载上的小间隙,在调整窗口大小后消失

javascript - 如何使用 CSS 或 jQuery 完全重置 div CSS

javascript - 如果值未更改,如何在提交时删除不需要的输入字段中的默认值?

jquery - 如何在 MagicSuggest 中获取 id 属性值?

javascript - jQuery "slideDown"动画不起作用