当前位置:首页 > JavaScript

实现 slice JS

2026-03-13 17:09:33JavaScript

实现 slice JS

实现 slice JS

实现 JavaScript 的 slice 方法

JavaScript 的 slice 方法用于提取数组或字符串的一部分,返回一个新数组或字符串,而不修改原始数据。以下是实现 slice 功能的几种方法。

实现数组的 slice 方法

function sliceArray(array, start, end) {
  const result = [];
  const length = array.length;

  start = start === undefined ? 0 : start < 0 ? Math.max(length + start, 0) : Math.min(start, length);
  end = end === undefined ? length : end < 0 ? Math.max(length + end, 0) : Math.min(end, length);

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

实现字符串的 slice 方法

function sliceString(str, start, end) {
  const length = str.length;

  start = start === undefined ? 0 : start < 0 ? Math.max(length + start, 0) : Math.min(start, length);
  end = end === undefined ? length : end < 0 ? Math.max(length + end, 0) : Math.min(end, length);

  let result = '';
  for (let i = start; i < end; i++) {
    result += str[i];
  }
  return result;
}

使用 ES6 的 Array.from 实现

function sliceArrayES6(array, start, end) {
  const length = array.length;
  start = start === undefined ? 0 : start < 0 ? Math.max(length + start, 0) : Math.min(start, length);
  end = end === undefined ? length : end < 0 ? Math.max(length + end, 0) : Math.min(end, length);

  return Array.from({ length: end - start }, (_, i) => array[start + i]);
}

注意事项

  • 如果未提供 start,默认从索引 0 开始。
  • 如果未提供 end,默认提取到末尾。
  • 负数索引表示从末尾开始计算。
  • 如果 startend 超出范围,会自动调整到有效索引。

以上方法模拟了原生 slice 的行为,可以根据需求选择适合的实现方式。

标签: sliceJS
分享给朋友:

相关文章

JS实现文本的删除

JS实现文本的删除

使用 substring() 方法 通过指定起始和结束索引截取字符串的一部分,间接实现删除效果。 let str = "Hello World"; let newStr = str.substr…

JS能实现跨平台吗

JS能实现跨平台吗

JavaScript 的跨平台能力 JavaScript 是一种高度灵活的脚本语言,通过不同运行时环境和工具链可以实现跨平台开发。以下是其跨平台能力的核心实现方式: 浏览器环境 JavaScript…

JS实现ln

JS实现ln

在JavaScript中实现自然对数(ln)功能可以通过以下几种方式完成: 使用Math对象的原生方法 JavaScript内置的Math对象提供了Math.log()方法,该方法默认计算以自然对数…

JS实现GPS

JS实现GPS

GPS定位的基本原理 GPS定位主要通过浏览器提供的Geolocation API实现。该API允许网页获取用户设备的地理位置信息,前提是用户授权同意。位置信息通常来源于设备的GPS模块、Wi-Fi或…

JS实现小手状

JS实现小手状

使用CSS cursor属性实现小手状 在网页中实现鼠标悬停时显示小手形状,最简单的方法是使用CSS的cursor属性。该属性可以直接设置为pointer,浏览器会自动渲染为手型图标。 .click…

JS原子锁实现

JS原子锁实现

实现原子锁的方法 使用JavaScript的Atomics对象和SharedArrayBuffer可以实现原子锁。Atomics提供了一组静态方法用于对SharedArrayBuffer进行原子操作,…