Javascript 查找数组中的元素是否与另一个数组中的相应元素连续
我想知道数组A的元素相对于数组B是否是连续的Javascript 查找数组中的元素是否与另一个数组中的相应元素连续,javascript,arrays,sequence,Javascript,Arrays,Sequence,我想知道数组A的元素相对于数组B是否是连续的 ["9:00 AM", "9:30 AM", "10:00 AM"] let all_appointments = ["9:00 AM", "9:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "
["9:00 AM", "9:30 AM", "10:00 AM"]
let all_appointments = ["9:00 AM", "9:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "1:00 PM", "1:30 PM", "2:00 PM", "2:30 PM", "3:00 PM", "3:30 PM", "4:00 PM", "4:30 PM"];
console.log(all_appointments.indexOf(["9:00 AM", "9:30 AM", "10:00 AM"]))
就…而言是连续的
["9:00 AM", "9:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "1:00 PM", "1:30 PM", "2:00 PM", "2:30 PM", "3:00 PM", "3:30 PM", "4:00 PM", "4:30 PM"]
及
事实并非如此
如果数组A的元素是连续的,则返回索引。比如说
["9:00 AM", "9:30 AM", "10:00 AM"]
let all_appointments = ["9:00 AM", "9:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "1:00 PM", "1:30 PM", "2:00 PM", "2:30 PM", "3:00 PM", "3:30 PM", "4:00 PM", "4:30 PM"];
console.log(all_appointments.indexOf(["9:00 AM", "9:30 AM", "10:00 AM"]))
应打印0
function foobar(a, b) {
const g = "__t(T.Tt)__";
return b.join(g).indexOf(a.join(g)) === 0 ? 0 : undefined;
}
编辑:添加sad kirby以减少误报的机会
编辑:添加sad kirby以减少误报的机会如果“参考数组”不能包含重复项,则应满足您的需要:
const indexOfArray = (needle, haystack) => {
if (!needle.length) {
return 0; // debatable
}
if (!haystack.length) {
return -1; // debatable
}
const haystackOffset = haystack.indexOf(needle[0]);
if (haystackOffset < 0) {
return -1;
}
for (let needleIndex = 1; needleIndex < needle.length; needleIndex++) {
const haystackIndex = needleIndex + haystackOffset;
if (haystack.length <= haystackIndex) {
return -1;
}
if (needle[needleIndex] !== haystack[haystackIndex]) {
return -1;
}
}
return haystackOffset;
};
如果“引用数组”不能包含重复项,则应满足您的需要:
const indexOfArray = (needle, haystack) => {
if (!needle.length) {
return 0; // debatable
}
if (!haystack.length) {
return -1; // debatable
}
const haystackOffset = haystack.indexOf(needle[0]);
if (haystackOffset < 0) {
return -1;
}
for (let needleIndex = 1; needleIndex < needle.length; needleIndex++) {
const haystackIndex = needleIndex + haystackOffset;
if (haystack.length <= haystackIndex) {
return -1;
}
if (needle[needleIndex] !== haystack[haystackIndex]) {
return -1;
}
}
return haystackOffset;
};
你想让我们看看吗?(这个网站不是一个代码编写服务。)问题是?这只需要一个
for
循环和一个if
如果数组a的元素是连续的,那么索引不总是返回0吗?您的预期输出不清楚。请提供更多的细节。你有没有尝试向我们展示?(这个网站不是一个代码编写服务。)问题是?这只需要一个for
循环和一个if
如果数组a的元素是连续的,那么索引不总是返回0吗?您的预期输出不清楚。请提供更多详细信息。与Ifaruki的回答相同,它可能最终导致误报,例如a=[“a”,“bc”]
和b=[“ab”,“c”]
@sp00m good point。我修改了答案以降低误报的可能性。与Ifaruki的答案相同,它可能最终导致误报,例如a=[“a”,“bc”]
和b=[“ab”,“c”]
@sp00m好点。我修改了答案以降低误报的可能性。