问个简单的逻辑问题

有没有办法回传两个array比较小的是否相同比较长的 而且不重复 “不可new一个新的array”:

array1:[1,2,3,4,5]
array2:[1,2,2,3,4,5]
ans: true

我原本使用
for (let i = 0; i < array1.length; i++) {
if(!array2.includes(array1[i])){return false}
else{array2.splice(i,1)}
}
但因为array被移除了少一个数 ,只要splice就会整个打乱array的顺序

https://www.cnblogs.com/itachilee/p/14267986.html
是这个意思?

是这个意思吧

没错 但我目前是一直看有没有办法不新增一个array解决

没明白这样的意义在哪 但是有办法

let array1 = [1, 2, 3, 4, 5];
let array2 = [1, 2, 2, 3, 4, 5];

    let twoLength = array2.length;
    for (let i = 0; i < array1.length; i++) {
        for (let k = 0; k < twoLength; k++) {
            if (array1[i] == array2[k] && newArr.indexOf(array1[i]) == -1) {
                array2.push(array1[i] )
            }
        }
    }
array2.splice(0,twoLength);
    console.log("array2=",array2);

哈哈 可以!!! 谢谢!

刚刚试了,还差一点 不能重复 上面的example跑你的方式,应该会有两个2

    let array1 = [1, 2, 3, 4, 5];
    let array2 = [1, 2, 2, 3, 4, 5];

    let oneLength = array1.length;
    for (let i = 0; i < oneLength; i++) {
        for (let k = 0; k < array2.length; k++) {
            if (array1[i] == array2[k]) {

                let bool = false;
                for (let m = oneLength; m < array1.length; m++) {
                    if (array1[m] == array1[i]) {
                        bool = true;
                        break;
                    }
                }
                if (!bool)
                    array1.push(array1[i])
            }
        }
    }
    array1.splice(0, oneLength);
    console.log("array1=", array1);

昨天急着下班 漏看了一个 不过你这个需求是有点奇怪了

感谢 总结一下,昨天是一直卡在用for回圈配上splice会在for时就让回圈顺序出现错误,
结论是直接push一个新的阵列,或是push新的阵列在后面,之后splice前面

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。