【发布时间】:2019-03-12 21:40:27
【问题描述】:
我想在这些情况下检测数组1中的值是否与array2的顺序相同:
var array1 = ["Bob", "Jason", "Fred"];
var array2 = ["Bob", "Jason", "Fred"]; // result: true, expected: true
or
var array1 = ["Bob", "Jason", "Fred"];
var array2 = ["Bob", "Fred", "Jason"]; // result: false, expected: False
or
var array1 = ["Bob", "Jason", "Fred"];
var array2 = ["Bob", "Jason"]; // result: true, expected: True
or
var array1 = ["Jason", "Fred", "Bob"];
var array2 = ["Bob", "Jason"]; // result: false, expected: False
or
var array1 = ["Jason", "Bob"];
var array2 = ["Jason", "Sue", "Bob"]; // result: false, expected: True - just because array 2 contains sue and array 1 doesn't, doesn't mean jason and bob aren't in the right order. They are. We need to ignore the fact sue is interrupting them.
or
var array1 = ["Jason", "Sue", "Bob"];
var array2 = ["Jason", "Bob", "Sue"]; // result: false, expected: False
or
var array1 = ["Sue", "Bob"];
var array2 = ["Jason", "Bob", "Sue"]; // result: false, expected: False
or
var array1 = ["Bob", "Sue"];
var array2 = ["Jason", "Bob", "Sue"]; // result: false, expected: True - just because jason is playing third wheel doesn't mean bob and sue aren't in the correct order. they are. we need to ignore jason.
or
var array1 = ["Bob", "Sue", "Bob"];
var array2 = ["Bob", "Bob", "Sue"]; // result: false, expected: False
or
var array1 = ["Bob", "Sue", "Bob"];
var array2 = ["Bob", "Sue", "Bob"]; // result: true, expected: true
or
var array1 = ["Bob", "Sue", "Bob"];
var array2 = ["Sue", "Bob"]; // result: false, expected: true - in this scenario, we have two Bobs. while Bob followed by Sue is false, sue followed by bob is true. we need to ignore the first Bob.
到目前为止,我已经得到了这个:
if (array1.length > array2.length) {
var arrayLength = array1.length;
} else if (array1.length < array2.length) {
var arrayLength = array2.length;
} else {
var arrayLength = array1.length;
}
for (var i = 0; i < arrayLength; i++){
if (array1[i] !== array2[i]) {
return false;
} else {
return true;
}
}
我的问题是上述内容并没有始终产生预期的结果。也就是说,如果两个数组的长度相同,那么我会得到预期的结果,但如果不是,我不会得到预期的结果。
我需要忽略缺失或添加的值,并纯粹查看它们是否处于相同的顺序,尽管这些缺失或添加的值。
【问题讨论】:
-
在循环中:
if (array1[i] !== array2[i]) { return false; } -
同一个值可以在任一数组中出现多次吗?
-
正例中的两个数组都具有相同的第一个元素。这是要求的一部分吗?
array1 = ["Jason", "Fred"]; array2 = ["Bob", "Jason", "Fred"];呢? -
@GershomMaes 是的
标签: javascript arrays loops