为什么slice方法在此代码中包含end参数?

问题描述 投票:0回答:1

我在这段视频中遇到了用javascript https://www.youtube.com/watch?v=ppNZ4bmrmGs&t=195s解释合并排序的视频>

据我所知,slice()方法选择从给定start参数开始的元素,并在给定end参数但不包括

处结束。那么,当这个人试图为存储结束参数索引0的子数组创建一个变量时,结果如何呢? :
const leftSide = array.slice(0, middle);
const rightSide = array.slice(middle, array.length);

这里是其余代码:

const mergeSort = array => {
  //Check if array can be split
  if(array.length < 2) return array;
  //Get Middle index
  const middle = Math.floor(array.length / 2);
  //Split Array In Two Sides
  const leftSide = array.slice(0, middle);
  const rightSide = array.slice(middle, array.length);
  //Use recusion to continue splitting
  console.log('split:', leftSide, rightSide);
  return merge(mergeSort(leftSide), mergeSort(rightSide));
}

const merge = (left, right) => {
  //Create New Array
  const result = [];
  //Check if left array and right array is empty
  while(left.length && right.length) {
    //Find lower value
    if(left[0] <= right[0]) {
      //Add left value
      result.push(left.shift());
    } else {
      //Add right value
      result.push(right.shift());
    }
  }
  //Merge left array
  while(left.length) result.push(left.shift());
  //Merge right array
  while(right.length) result.push(right.shift());
  //return result array
  console.log('result:', result);
  return result;
}

console.log(mergeSort([5, 3, 7, 10, 4, 1, 5]));

[我在这段视频中看到了用JavaScript https://www.youtube.com/watch?v=ppNZ4bmrmGs&t=195s解释合并排序的视频,据我所知,slice()方法选择了从给定元素开始的元素...

javascript arrays sorting slice mergesort
1个回答
1
投票

在大多数编码语言中,索引从0开始的结果是,您可以通过获取索引小于n的所有元素来访问前n个元素。大多数编码语言的技巧都遵循此原则,例如splice之类的函数的包含/排除属性。看看如何拆分测试数组:

© www.soinside.com 2019 - 2024. All rights reserved.