我有一些代码旨在执行以下操作:
Given two arrays of strings
a1
anda2
return a sorted arrayr
in lexicographical order of the strings ofa1
which are substrings of strings ofa2
.
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/