javascript - 比较项目并将其添加到对象数组中

标签 javascript arrays multidimensional-array

下面的代码应该是:

1)遍历两个数组,

2) 如果两个数组中都存在某个项目,则将其值添加到第一个数组中相似项目的值中,

3) 如果在 arr2 中找到该项目但在 arr1 中未找到该项目,则将该项目添加到 arr1 中。当两个数组具有相同大小时,我的代码可以按预期工作,但这是我使用不同大小的数组得到的结果。

结果:

[[42, "Bowling Ball"], [4, "Dirty Sock"], [2, "cat"], [6, "mugs"], [2, "Dirty Sock"], [3, "rags"]]

应该是:

[[42, "Bowling Ball"], [4, "Dirty Sock"], [2, "cat"], [3, "rags"], [3, "mugs"]]

这是我的代码:

function updateInventory(arr1, arr2) {
  for (var i = 0; i < arr1.length; i++) {
    for (var j = i; j < arr2.length; j++) {
      if (arr1[i][1] === arr2[j][1]) {
        arr1[i][0] += arr2[j][0];
      }
      if (arr1[i].indexOf(arr2[j][1]) === -1) {
        arr1.push(arr2[j]);
      }
      if (arr2.length > arr1.length) {
        arr1.push(arr2[arr2.length -1]);
      }
      else
        break;
    }
  }
  return arr1;
}

var curInv = [
    [21, "Bowling Ball"],
    [2, "Dirty Sock"],
    [2, "cat"],
];

var newInv = [
    [21, "Bowling Ball"],
    [2, "Dirty Sock"],
    [3, "rags"],
    [3, "mugs"]
];

updateInventory(curInv, newInv);

这里有什么问题?

最佳答案

您可以使用 list 的哈希表并检查和更新 currInv

var curInv = [[21, "Bowling Ball"], [2, "Dirty Sock"], [2, "cat"], ],
    newInv = [[21, "Bowling Ball"], [2, "Dirty Sock"], [3, "rags"], [3, "mugs"]],
    inventory = Object.create(null);

curInv.forEach(function (a) {
    this[a[1]] = a;
}, inventory);

newInv.forEach(function (a) {
    if (!this[a[1]]) {
        this[a[1]] = [0, a[1]];
        curInv.push(this[a[1]]);
    }
    this[a[1]][0] += a[0];
}, inventory);

console.log(curInv);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 比较项目并将其添加到对象数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40184870/

相关文章:

java - 数组超出范围 ..从 mysql 表创建多维数组

javascript - 我如何在 JQuery 中完成这个简单的任务...显示图像

javascript - jQuery Cookie 路径

javascript - 遍历嵌套数组并转换为对象

java - 数组不适用于小句子

javascript - 如何检查数组中的每一项?

c++ - 覆盖数组索引运算符

javascript - 根据图像内框的尺寸计算出图像所需的高度

javascript - JQuery 验证表单但不是 `submit` 按钮

java - java 对二维 double 组进行排序