【问题标题】:javascript slice without using built in method [closed]不使用内置方法的javascript切片[关闭]
【发布时间】:2020-04-05 00:38:41
【问题描述】:

array.slice 方法背后的逻辑是什么?我正在尝试实现一个函数来提取数组的一部分而不实际使用 slice 方法。

function newSlice(array, begin, end) {

for (let i = begin; i <= end; i++) {
return array[i];
}

【问题讨论】:

  • 逻辑在例如developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。如果您在实施时遇到问题,请提供minimal reproducible example
  • 创建一个新数组。从起始索引开始,将该元素添加到新数组中,添加一个并检查您是否没有超过结束索引。如果您超过了结束索引,则返回新数组,否则将一个添加到您当前所在的索引并再次执行该过程,直到您到达结束索引。如果没有提供结束索引,则假设结束索引为(数组的长度)-1。

标签: javascript arrays slice


【解决方案1】:

使用 slice 方法,您只是从这里(开始)到那里(结束)提取数组的“切片”。要自己实现切片功能,请尝试以下操作:

function newSlice(array, begin, end) {
  let tempArray =[];

  if(end===undefined || end > array.length)
    end = array.length;

  for (let i = begin; i < end; i++) {
    tempArray.push(array[i]);
  }
  return tempArray;
}

myArray =newSlice([8,3,4,5,4],1,3);

这里我们从数组 [8,3,4,5,4] 中获取一个切片,从索引 1 到索引 3 结束返回 [3,4]。

【讨论】:

  • 太好了,谢谢!请问如果没有结束或者结束实际上大于数组的长度,输出会是什么?
  • 没问题!如果没有给定结尾或者结尾大于数组长度,我们可以修改函数以切片到数组的末尾,使用以下 if 语句:if(end===undefined || end &gt; array.length) end = array.length;
  • 再次感谢!非常感谢!
猜你喜欢
  • 2021-11-09
  • 2011-04-24
  • 2018-05-23
  • 2020-12-31
  • 2017-07-22
  • 2021-11-05
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多