【问题标题】:Find Array[1D] in Array[2D] and return index在 Array[2D] 中查找 Array[1D] 并返回索引
【发布时间】:2020-02-24 08:45:39
【问题描述】:

有什么方法可以更快地找到数组[2D] 中的匹配索引吗? 我知道逐一比较可以做到这一点,但我不想这样做。

我试过这个,但它只能返回-1

// mainsheetvalues is array[1D],
[1,2,3,4,5]


// AsheetValues is array [2D]
[
  [1,2,3,4,5],
  [6,7,8,9,0]
]

Logger.log(mainsheetvalues.indexOf(AsheetValues))

【问题讨论】:

  • 1.什么是预期输出? 2.你要搜索数字1还是数组[1,2,3,4,5]?
  • 这能回答你的问题吗? Javascript 2d array indexOf
  • 感谢所有帮助,谢谢。

标签: javascript arrays google-apps-script multidimensional-array google-sheets


【解决方案1】:

根据answer,我们不能直接比较两个数组。您需要为比较生成一些自定义逻辑。我在下面添加了一个逻辑。希望这会有所帮助。

const AsheetValues  = [
    [1,2,3,4,5],
    [6,7,8,9,0]
]   
const mainsheetvalues  = [1,2,3,4,5];
const isIncluded = (parentArr, childArr) => {
    let isMatch = true;
    for(let parentLoopIndex = 0; parentLoopIndex < parentArr.length; parentLoopIndex++) {
        if (parentArr[parentLoopIndex].length != childArr.length)
            isMatch = false;
        
            for (var i = 0; i < parentArr[parentLoopIndex].length; i++) {
                if (parentArr[parentLoopIndex][i] != childArr[i]) { 
                    isMatch = false;   
                }           
            }   
            if (isMatch)  {
                parentLoopIndex = parentArr.length;
            }    
        }
    return isMatch;
}

console.log(isIncluded(AsheetValues, mainsheetvalues));

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 2021-05-05
    • 1970-01-01
    • 2021-11-01
    • 2018-08-25
    • 2021-07-28
    • 2018-12-23
    • 2019-12-15
    • 2022-01-18
    相关资源
    最近更新 更多