【问题标题】:Remove first element array Javascript Node.Js [duplicate]删除第一个元素数组Javascript Node.Js [重复]
【发布时间】:2017-12-15 16:42:22
【问题描述】:

我在删除数组的第一个元素时遇到问题如果我尝试切片 (1,1) 或移位,我无法获得列表。

例如,

我的数组:[1499783769720,"54:52:00:62:46:66","54:52:00:b0:fa:57","54:52:00:8f:d9:7c","54:52:00:e7:67:10","54:52:00:26:56:56","54:52:00:33:3a:4d","54:52:00:7b:f4:ec","54:52:00:1d:48:1e","54:52:00:55:14:ed","54:52:00:78:b8:51"]

我想删除时间采样“1499783769720”,只需要["54:52:00:62:46:66","54:52:00:b0:fa:57","54:52:00:8f:d9:7c","54:52:00:e7:67:10","54:52:00:26:56:56","54:52:00:33:3a:4d","54:52:00:7b:f4:ec","54:52:00:1d:48:1e","54:52:00:55:14:ed","54:52:00:78:b8:51"]

如果我尝试切片,我只会得到一个值 "54:52:00:78:b8:51",而使用 sift 我会得到 1499783769720

我该怎么做?

var randomMac = require('random-mac');
var now = Date.now();
var lista=[];

lista.push(now);
for(var i=0;i<10;i++){
    var random = randomMac();
    lista[i+1] = random;
}

【问题讨论】:

  • lista.shift(); console.log(lista);
  • slice 返回删除的元素。 slice 的一个重要方面是它不会更改调用它的数组..
  • 其实“slice将一个数组的一部分浅拷贝返回到一个新的数组对象中,从开始到结束(不包括结束)选择。原始数组不会被修改”-@ 987654321@

标签: javascript node.js


【解决方案1】:

试试.slice(1)

const firstRemoved = [
  1499783769720,
  '54:52:00:62:46:66',
  '54:52:00:b0:fa:57',
  '54:52:00:8f:d9:7c',
  '54:52:00:e7:67:10',
  '54:52:00:26:56:56',
  '54:52:00:33:3a:4d',
  '54:52:00:7b:f4:ec',
  '54:52:00:1d:48:1e',
  '54:52:00:55:14:ed',
  '54:52:00:78:b8:51'
].slice(1);

console.log(firstRemoved);

【讨论】:

  • “切片的一个重要方面是它不会改变调用它的数组。”
【解决方案2】:
myArray.splice(myArray.indexOf(myArray[0]),1);

试试这个。 plnkr:plnkr.co/edit/tFEbwbFEyVX6TarlZJ2d?p=preview 使用这种方法,您可以传递准确的值并准确删除您需要的值。

【讨论】:

  • 为什么要这样做?你应该解释你的答案。
  • 我更喜欢使用.slice(),因为它不会改变你的数组,但会给你一个修改后的副本。
  • 不工作,它给了我第一个元素
  • 那么,您是要修改数组(然后使用.splice(1))还是要删除第一个元素的数组副本(然后使用.slice(1))? slice 是更好的方法恕我直言。
【解决方案3】:

您可以使用Array.prototype.shift():shift() 方法从数组中删除第一个元素并返回该元素。这个方法改变了数组的长度。

var list = [1499783769720,"54:52:00:62:46:66","54:52:00:b0:fa:57","54:52:00:8f:d9:7c","54:52:00:e7:67:10","54:52:00:26:56:56","54:52:00:33:3a:4d","54:52:00:7b:f4:ec","54:52:00:1d:48:1e","54:52:00:55:14:ed","54:52:00:78:b8:51"];

list.shift(); // First removed
console.log(list);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    【解决方案4】:

    试着理解这个例子:

    var list = ["a","b","c","d"]
    list = list.slice(1);
    console.log(list);
    

    slice 函数不会改变原始数组,因此需要重新分配数组变量。

    【讨论】:

    • 使用list.shift() 不需要重新分配变量。因为shift() 方法会从数组中删除第一个元素
    • 是的,但是在函数式编程中不鼓励改变现有变量,因为它有副作用。因此,slice() 是首选。
    • 如果您正在寻找性能,移位几乎比切片快 10 倍。
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多