Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找数组中的元素是否与另一个数组中的相应元素连续_Javascript_Arrays_Sequence - Fatal编程技术网

Javascript 查找数组中的元素是否与另一个数组中的相应元素连续

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", "

我想知道数组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", "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好点。我修改了答案以降低误报的可能性。