删除数组中的第一个和最后一个元素
Posted
技术标签:
【中文标题】删除数组中的第一个和最后一个元素【英文标题】:to remove first and last element in array 【发布时间】:2011-06-06 08:38:37 【问题描述】:如何?
例如:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
预期的输出数组:
["Orange", "Apple"]
【问题讨论】:
这看起来像是一个用于创建指向 w3schools 的链接的“软球”,您甚至使用了相同的数组元素。 ;-) 【参考方案1】:创建 1 级深拷贝。
fruits.slice(1, -1)
放开原来的数组。
感谢@Tim 指出拼写错误。
【讨论】:
我认为您的意思是slice()
而不是 splice()
。
切片水果比爆裂或移动水果要好得多。
随着 redux、函数式 javscript 和不可变事物的日益普及,这个答案会更好【参考方案2】:
fruits.shift(); // Removes the first element from an array and returns only that element.
fruits.pop(); // Removes the last element from an array and returns only that element.
See all methods for an Array.
【讨论】:
使用 jQuery UI 更容易myArray.effect( "transfer", item: 'first&&last', to: bin);
亲爱的反对者,您可能希望您的反对意见对您有所帮助,因此请添加评论,说明答案有什么问题..
这将只返回被删除的(第一个或最后一个)元素的值,而不是剩余的数组
@RC。只是想通知用户有关功能的实际工作。我在质疑你的回答。
像用户一样使用这个函数,就像你写的一样,它肯定可以作为删除元素正常工作,但是如果用户写return fruits.shift()
,它将只返回第一个元素,然后从数组中删除。【参考方案3】:
我使用拼接方法。
fruits.splice(0, 1); // Removes first array element
var lastElementIndex = fruits.length-1; // Gets last element index
fruits.splice(lastElementIndex, 1); // Removes last array element
要删除最后一个元素,您也可以这样做:
fruits.splice(-1, 1);
查看Remove last item from array 了解更多相关信息。
【讨论】:
【参考方案4】:var fruits = ["Banana", "Orange", "Apple", "Mango"];
var newFruits = fruits.slice(1, -1);
console.log(newFruits); // ["Orange", "Apple"];
这里,-1 表示数组中的最后一个元素,1 表示第二个元素。
【讨论】:
如果您不必创建新变量,则只需fruits = fruits.slice(1,-1);
。【参考方案5】:
你用过 Fruits.shift() 方法删除第一个元素。 如果您使用按钮单击,用于最后一个元素的 Fruits.pop() 方法将一个一个删除。 Fruits.slice(start position, delete element)你也使用slice方法在中间开始删除元素。
【讨论】:
阅读本文并正确格式化您的答案meta.stackexchange.com/questions/22186/…【参考方案6】:您可以使用Array.prototype.reduce()。
代码:
const fruits = ['Banana', 'Orange', 'Apple', 'Mango'],
result = fruits.reduce((a, c, i, array) => 0 === i || array.length - 1 === i ? a : [...a, c], []);
console.log(result);
【讨论】:
酷看 reduce 删除第一项和最后一项!【参考方案7】:var resident_array = ["RC_FRONT", "RC_BACK", "RC_BACK"];
var remove_item = "RC_FRONT";
resident_array = $.grep(resident_array, function(value)
return value != remove_item;
);
resident_array = ["RC_BACK", "RC_BACK"];
【讨论】:
从数组中删除第一个元素。【参考方案8】:要从数组中删除元素很容易,只需执行以下操作
let array_splited = [].split('/');
array_splited.pop()
array_splited.join('/')
【讨论】:
【参考方案9】:push()
在数组末尾添加一个新元素。pop()
从数组末尾删除一个元素。
unshift()
将一个新元素添加到数组的开头。shift()
从数组的开头删除一个元素。
要从数组 arr
中删除第一个元素,请使用 arr.shift()
要从数组 arr
中删除最后一个元素,请使用 arr.pop()
【讨论】:
【参考方案10】:删除数组的第一个和最后一个元素是通过使用数组的内置方法,即shift()
和pop()
fruits.shift()
将数组的第一个元素作为“香蕉”而@987654328 @ 获取数组的最后一个元素为“Mango”。所以数组的剩余元素将是["Orange", "Apple"]
【讨论】:
您给出的答案已经存在于这个问题中:here 和here。如果您觉得他们需要更多解释,请在您不满意的答案下方留言。 格式化您的代码会有所帮助 (meta.stackexchange.com/questions/22186/…)!此外,这个答案似乎与其他答案相同(例如***.com/a/43327999/608312)。 注明@JakeSteam【参考方案11】:这可以通过 lodash _.tail
和 _.dropRight
来完成:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(_.dropRight(_.tail(fruits)));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
【讨论】:
【参考方案12】:假设你有一个名为 list 的数组。 Splice() 函数可用于在特定索引中添加和删除该数组中的项目,即可以在开头或结尾或任何索引处。相反,还有另一个函数名称 shift() 和 pop() 只能删除数组中的第一项和最后一项。
这是 Shift 函数,它只能删除数组的第一个元素
var item = [ 1,1,2,3,5,8,13,21,34 ]; // say you have this number series
item.shift(); // [ 1,2,3,5,8,13,21,34 ];
Pop 函数从数组的最后一个索引处删除项目
item.pop(); // [ 1,2,3,5,8,13,21 ];
现在有了 splice 功能,您可以通过它删除任何索引处的项目
item.slice(0,1); // [ 2,3,5,8,13,21 ] removes the first object
item.slice(item.length-1,1); // [ 2,3,5,8,13 ] removes the last object
切片函数接受两个参数(开始索引,要走的步数);
【讨论】:
【参考方案13】:为了避免 Mutation 和更改源数组,ReactJS 开发人员不能使用 pop
、shift
函数,因为两者都会更改源数组,这种更改是非常深的错误的根源。
最好的方法是使用slice
javascript 内置函数。此函数将创建源数组的切片并为您返回一个新数组,它也接受负索引数,这意味着第一个负数是数组中的最新项。所以:
fruits.slice(a, b)
第一个参数表示从索引a
开始,而不需要索引a - 1
。
第二个参数表示切片在索引b - 1
中结束,并且不需要索引b
。
所以通过上面的解释,如果我们放a = 1
,这意味着我们不想要第一个元素,如果我们放b = latest
,这意味着切片将在索引b - 1
结束,我们不知道索引b
.
✨:slice
函数中最新元素的索引是多少?正确的-1
。
✅所以最后的答案是:
fruits.slice(1, -1)
【讨论】:
以上是关于删除数组中的第一个和最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章