javascript - 为什么我的函数返回不同的数组?

标签 javascript arrays for-loop splice

我有一些代码旨在执行以下操作:

Given two arrays of strings a1 and a2 return a sorted array r in lexicographical order of the strings of a1 which are substrings of strings of a2.
Arrays are written in "general" notation.

现在我正在做一个测试,其中 array1 = ["arp", "live", "strong"]array2 = ["lively", "alive", "harp ”、“锐利”、“阿姆斯特朗”]。 我想我已经明白了,但我不明白为什么当在最后一个 for 循环中我替换 newArray 时,该函数只返回数组 ["arp", "strong"] 。 splice(l, l+1)newArray.splice(k, k+1)。 谁能告诉我这是为什么?

function inArray(array1, array2) {
    var newArray = [];
    var sortedArray = [];
    for (var i in array2) {
        for (var j in array1) {
            if (array2[i].includes(array1[j])) {
                newArray.push(array1[j]);
            };
        };
    };
    sortedArray = newArray.sort();
    for (var k = 0; k < newArray.length; k++) {
        for (var l = 0; l < newArray.length; l++) {
            if (newArray[k] === newArray[l] && k != l) {
                newArray.splice(l, l + 1)
            }
        }
    }
    return sortedArray;
};

console.log(inArray(["arp", "live", "strong"], ["lively", "alive", "harp", "sharp", "armstrong"]));

最佳答案

看起来你有点过于复杂了;)

a1 = ["arp", "live", "strong", "bazooka"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]


result = a1
    .filter(x => a2.some(y => y.includes(x)))
    .sort();

console.log(result);

关于javascript - 为什么我的函数返回不同的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41242102/

相关文章:

javascript - 更改功能也会影响克隆 div

arrays - 如何在Elasticsearch中按值数组查询/过滤精确计数?

python - 不在列表中 - 列表理解

c++ - C++ 中循环的 Hangman 程序

javascript - 使用 Javascript 删除 Gridview 行

javascript - jquery附加按钮单击显示文本然后消失

javascript多维数组

javascript - 如何将数组中的元素分组为满足特定条件的对象并将其推送到新数组

java - 找出读入数据的正确方法

for-loop - 在 Go 中使用由 'for' 循环创建的 channel