【问题标题】:Extracting last n elements from array without disturbing original array从数组中提取最后 n 个元素而不干扰原始数组
【发布时间】:2019-01-03 14:14:59
【问题描述】:

我想从没有拼接的数组中提取最后 n 个元素

我有如下数组,我想从新数组 [33, 44] 中的任何数组中获取最后 2 个或 n 个元素

[22, 55, 77, 88, 99, 22, 33, 44] 

我尝试将旧数组复制到新数组,然后进行拼接。但我相信一定有其他更好的方法。

var arr = [22, 55, 77, 88, 99, 22, 33, 44] ;
var temp = [];
temp = arr;
temp.splice(-2);

上面的代码也从原始数组arr中删除了最后两个元素;

那么我怎样才能从原始数组中提取最后 n 个元素而不将其转换为新变量

【问题讨论】:

标签: javascript arrays


【解决方案1】:

您可以使用Array#slice,它不会改变原始数组。

var array = [22, 55, 77, 88, 99, 22, 33, 44];
    temp = array.slice(-2);

console.log(temp);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    【解决方案2】:

    使用slice() 代替splice()

    来自Docs

    slice() 方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中。原数组不会被修改。

    var arr = [22, 55, 77, 88, 99, 22, 33, 44] ;
    
    var newArr = arr.slice(-2);
    
    console.log(newArr);
    console.log(arr);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案3】:

      你可以用Array.from创建一个浅拷贝,然后拼接。

      或者只是按照其他答案的建议使用Array.prototype.slice

      const a = [22, 55, 77, 88, 99, 22, 33, 44];
      console.log(Array.from(a).splice(-2));
      console.log(a);

      【讨论】:

        【解决方案4】:

        使用 Array.slice:

        let arr = [0,1,2,3]
        arr.slice(-2); // = [2,3]
        arr; // = [0,1,2,3]
        

        【讨论】:

          【解决方案5】:
          var arr = [22, 55, 77, 88, 99, 22, 33, 44] ;
          var temp = [];
          var arrCount = arr.length;
          temp.push(arr[arrCount-1]);
          temp.push(arr[arrCount-2]);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-05
            • 2019-07-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多