【发布时间】:2022-12-04 18:31:43
【问题描述】:
如何检查 array1 中的项目是否存在于 array2 中,如果存在,则从 col5 中减去 col4 以输出待定数量。如果不是,则来自array1 的商品数量是待定数量。
let array1 =
[
[1, "Item A", "Food", 10, 0],
[2, "Item B", "Food", 5, 0],
[3, "Item C", "Food", 30, 0]
]
let array2 =
[
[1, "Item A", "Food", 5, 3],
[3, "Item C", "Food", 10, 5]
]
预期结果
let res=
[
[1, "Item A", "Food", 10, 7],
[2, "Item B", "Food", 5, 0],
[3, "Item C", "Food", 30, 25]
]
我使用 for 循环启动它,但我想知道使用 map() 或 reduce() 会是什么样子?
let array1 = [
[1, "Item A", "Food", 10, 0],
[2, "Item B", "Food", 5, 0],
[3, "Item C", "Food", 30, 0]
]
let array2 = [
[1, "Item A", "Food", 5, 3],
[3, "Item C", "Food", 10, 5]
]
let result = [];
for (let a = 0; a < array1.length; a++) {
let item = [];
for (let r = 0; r < array2.length; r++) {
if (array1[a][0] == array2[r][0] && array1[a][1] == array2[r][1]) {
let pendingQty = array1[a][3] - array2[r][4];
if (pendingQty > 0) {
item = [array1[a][0], array2[r][1], array2[r][2], array2[r][3], pendingQty];
} else {
item = array1[a];
}
}
if (item.length === 0) {
item = array1[a];
}
}
result.push(item.slice());
}
console.log(result)
【问题讨论】:
-
为什么您的预期结果中的第二行不是
[2, "Item B", "Food", 5, 5]? -
省时提示:Markdown中实现
inline formatting,只需要一个反引号,不需要三个。只有块需要三个。
标签: javascript google-apps-script