4

Basically, how do you return AND remove the first element of an array WITHOUT using the shift() OR splice() methods(or any other methods for that matter)?

thanks in advance!

4

2 回答 2

6

“shift”方法背后的逻辑是什么?

在规范中有完整的描述。

基本上,如何在不使用 shift() 或 splice() 方法(或任何其他方法)的情况下返回并删除数组的第一个元素?

我看不出这种限制有什么好的理由,但是您可以使用循环手动为每个条目分配其上方的值(从末尾开始),直到您要更改的索引,然后length设置数组减一。像这样模糊的东西(我敢肯定这不是什么的完整实现shift):

实例| 直播源

var n;
for (n = theArray.length - 2; n >= removeAt; --n) {
    theArray[n] = theArray[n+1];
}
--theArray.length;

更改length数组的属性将删除不再在长度范围内的任何元素。

您还可以在不改变数组长度的情况下删除元素,使用delete

delete theArray[removeAt];

数组的长度将保持不变,但在该位置将不再有条目(根本没有)。它变得稀疏(如果还没有的话)。这是有效的,因为该delete语句从对象中删除了属性,而无类型的 JavaScript 数组实际上只是对象

于 2013-09-05T06:36:35.087 回答
0

我想这就是你要找的。它设置第一个字母,然后添加字符串的其余部分,用空字符串替换 finalString 变量中的第一个字母,然后返回 firstLetter 变量中保存的第一个字母。

function remove(str){
  let firstLetter = '';
  let finalString = '';
  for(let i = 0; i < str.length; i++){
    if(i === 0){
      firstLetter = str[i];
    }
    finalString += str[i];
    if(i === 0){
      finalString = '';
    }
  }
  return firstLetter;
}

remove('hello');
于 2018-03-30T00:53:27.550 回答