删除数组中的第一个和最后一个元素
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】:为了避免 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)
【讨论】:
【参考方案2】:假设你有一个名为 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
切片函数接受两个参数(开始索引,要走的步数);
【讨论】:
【参考方案3】:您可以使用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 删除第一项和最后一项!【参考方案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】:
这可以通过 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>
【讨论】:
【参考方案6】:删除数组的第一个和最后一个元素是通过使用数组的内置方法,即shift()
和pop()
fruits.shift()
将数组的第一个元素作为“香蕉”而@987654328 @ 获取数组的最后一个元素为“Mango”。所以数组的剩余元素将是["Orange", "Apple"]
【讨论】:
您给出的答案已经存在于这个问题中:here 和here。如果您觉得他们需要更多解释,请在您不满意的答案下方留言。 格式化您的代码会有所帮助 (meta.stackexchange.com/questions/22186/…)!此外,这个答案似乎与其他答案相同(例如***.com/a/43327999/608312)。 注明@JakeSteam【参考方案7】:push()
在数组末尾添加一个新元素。pop()
从数组末尾删除一个元素。
unshift()
将一个新元素添加到数组的开头。shift()
从数组的开头删除一个元素。
要从数组 arr
中删除第一个元素,请使用 arr.shift()
要从数组 arr
中删除最后一个元素,请使用 arr.pop()
【讨论】:
【参考方案8】:要从数组中删除元素很容易,只需执行以下操作
let array_splited = [].split('/');
array_splited.pop()
array_splited.join('/')
【讨论】:
【参考方案9】: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"];
【讨论】:
从数组中删除第一个元素。【参考方案10】:你用过 Fruits.shift() 方法删除第一个元素。 如果您使用按钮单击,用于最后一个元素的 Fruits.pop() 方法将一个一个删除。 Fruits.slice(start position, delete element)你也使用slice方法在中间开始删除元素。
【讨论】:
阅读本文并正确格式化您的答案meta.stackexchange.com/questions/22186/…【参考方案11】:我使用拼接方法。
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 了解更多相关信息。
【讨论】:
【参考方案12】: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()
,它将只返回第一个元素,然后从数组中删除。【参考方案13】:
创建 1 级深拷贝。
fruits.slice(1, -1)
放开原来的数组。
感谢@Tim 指出拼写勘误。
【讨论】:
我认为您的意思是slice()
而不是 splice()
。
切片水果比爆裂或移动水果要好得多。
随着 redux、功能性 javscript 和不可变事物的日益普及,这个答案要好得多以上是关于删除数组中的第一个和最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章