arrays - 匹配两个数组键并将其值与谷歌应用脚本结合起来
问题描述
我有两个格式化数组,如下代码,我想匹配 id 并获取 size 和 stock 的匹配 id 值
我有来自github的代码如下,但无法让它工作
var arraysize = [];
var arraycode = [];
var code = '{id:'+stock[i][1] +',stock:'+ stock[i][4]+'}';
var size = '{id:'+tomatchcode+',size:'+tomatchsize+'}';
arraycode[i] = code;
arraysize[i] = size;
Logger.log(arraysize);
Logger.log(arraycode);
[19-08-29 10:32:35:003 ICT] [{id:59,size:36}, {id:123,size:37}, {id:62,size:38}, {id:63,size:39}, {id:64,size:40}]
[19-08-29 10:32:35:003 ICT] [{id:63,stock:17}, {id:123,stock:16}, {id:59,stock:10}, {id:64,stock:12}, {id:62,stock:14}]
//both array id value in random position but have same value
var matcharray =checkArrayForMatches(arraycode,arraysize)
function checkArrayForMatches(array,properties){
var returnArray = [];
if (Array.isArray(array[0])){
for (var i = 0,x = array.length;i<x;i++){
var row = array[i];
var match = true;
for (var j in properties){
if (properties[j] !== row[j]){
match = false;
}
}
if (match) {returnArray.push(i)};
}
} else if (typeof array[0] == 'object'){
for (var i = 0,x = array.length;i<x;i++){
var obj = array[i];
var match = true;
for (var j in properties){
if (obj[j] !== properties[j]){
match = false;
}
}
if (match) {returnArray.push(i)};
}
}
return returnArray;
}
上面的函数没有返回任何值。我希望它返回这样的数组,其中包含大小值,后跟股票值 [{36,10}, {37,16}, {38,13}, {39,17}, {40,12}]可以看到每个返回值都有一个匹配的 id。
任何帮助深表感谢。
解决方案
流动:
- 创建一个哈希表
id:stock
- 用于使用of从哈希表
Array.map
中检索stock
id
arraysize
片段:
var arraysize = [{ id: 59, size: 36}, { id: 123, size: 37}, { id: 62, size: 38}, { id: 63, size: 39}, { id: 64, size: 40}];
var arraycode = [{ id: 63, stock: 17}, { id: 123, stock: 16}, { id: 59, stock: 10}, { id: 64, stock: 12}, { id: 62, stock: 13}];
var arrayCodeObj = {};
arraycode.forEach(function(obj){arrayCodeObj[obj.id]=obj.stock});//create hash table
var arr2d = arraysize.map(function(obj){ return [obj.size, arrayCodeObj[obj.id]]})
console.log(arr2d)
console.log(arrayCodeObj)
推荐阅读
- c - 由于此功能,我的 do while 循环是否不起作用?
- julia - 在 Julia 中向 Dict 添加和调用 Function
- ios - 设置不带 clipsToBounds 的角半径仅适用于 UIView 类型?
- android - Firebase realtime database security rules
- magento2 - Magento 2.3.4 尺寸样本显示为可销售数量为 0 的产品
- reactjs - 为什么我第一次在 React 中单击提交时我的状态没有改变或工作
- acumatica - 如何专注于抛出异常的领域?
- javascript - 每个用户的游戏未定义,即使它不应该是
- raspberry-pi - 在 Raspberry Pi 2 上安装 Alpine Linux 与 root 密码斗争
- c# - 实体框架核心计算属性多表