Javascript 如何从数组中获取子数组?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7538519/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 02:38:58  来源:igfitidea点击:

How to get subarray from array?

javascriptarrays

提问by Sergey Metlov

I have var ar = [1, 2, 3, 4, 5]and want some function getSubarray(array, fromIndex, toIndex), that result of call getSubarray(ar, 1, 3)is new array [2, 3, 4].

我有var ar = [1, 2, 3, 4, 5]并想要一些函数getSubarray(array, fromIndex, toIndex),调用的结果getSubarray(ar, 1, 3)是新数组[2, 3, 4]

回答by Alex K.

Take a look at Array.slice(begin, end)

看一眼 Array.slice(begin, end)

const ar  = [1, 2, 3, 4, 5];

// slice from 1..3 - add 1 as the end index is not included

const ar2 = ar.slice(1, 3 + 1);

console.log(ar2);

回答by Abdennour TOUMI

For a simple use of slice, use my extension to Array Class:

对于 的简单使用slice,请使用我对 Array Class 的扩展:

Array.prototype.subarray = function(start, end) {
    if (!end) { end = -1; } 
    return this.slice(start, this.length + 1 - (end * -1));
};

Then:

然后:

var bigArr = ["a", "b", "c", "fd", "ze"];

Test1:

测试1

bigArr.subarray(1, -1);

< ["b", "c", "fd", "ze"]

< ["b", "c", "fd", "ze"]

Test2:

测试2:

bigArr.subarray(2, -2);

< ["c", "fd"]

< ["c", "fd"]

Test3:

测试3:

bigArr.subarray(2);

< ["c", "fd","ze"]

< ["c", "fd","ze"]

Might be easier for developers coming from another language (i.e. Groovy).

对于来自另一种语言(即 Groovy)的开发人员来说可能更容易。

回答by hannad rehman

const array_one = [11, 22, 33, 44, 55];
const start = 1;
const end = array_one.length - 1;
const array_2 = array_one.slice(start, end);
console.log(array_2);

回答by user73362

The questionis actually asking for a New array, so I believe a better solution would be to combine Abdennour TOUMI's answerwith a clone function:

问题是实实在在的一个新的数组,所以我认为一个更好的解决办法是结合Abdennour•图米的答案与克隆功能:

function clone(obj) {
  if (null == obj || "object" != typeof obj) return obj;
  const copy = obj.constructor();
  for (const attr in obj) {
    if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
  }
  return copy;
}

// With the `clone()` function, you can now do the following:

Array.prototype.subarray = function(start, end) {
  if (!end) {
    end = this.length;
  } 
  const newArray = clone(this);
  return newArray.slice(start, end);
};

// Without a copy you will lose your original array.

// **Example:**

const array = [1, 2, 3, 4, 5];
console.log(array.subarray(2)); // print the subarray [3, 4, 5, subarray: function]

console.log(array); // print the original array [1, 2, 3, 4, 5, subarray: function]

[http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object]

[ http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object]