匹配两个数组键,并将其值与Google App脚本结合

时间:2019-08-28 09:31:17

标签: arrays google-apps-script

我有两个格式化的数组,如下代码,我想匹配id并获取匹配的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。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

流量:

  • 创建id:stock的哈希表
  • 使用Array.map的{​​{1}}中的stock从哈希表中检索id

摘要:

arraysize