我正在使用 array
保存一些数据,并希望添加一个函数,使用户可以反转列表。我目前想不到任何可能的方法,如果有人知道,请帮忙。
我正在使用 array
保存一些数据,并希望添加一个函数,使用户可以反转列表。我目前想不到任何可能的方法,如果有人知道,请帮忙。
Javascript有一个reverse()
方法,可以在数组中调用。
var a = [3,5,7,8];
a.reverse(); // 8 7 5 3
不确定您所说的“不能使用的库”是否是指实践中的某些事情。如果是这种情况,您可以实现自己的.reverse()
版本。
function reverseArr(input) {
var ret = new Array;
for(var i = input.length-1; i >= 0; i--) {
ret.push(input[i]);
}
return ret;
}
var a = [3,5,7,8]
var b = reverseArr(a);
请注意,内置的.reverse()
方法操作的是原始数组,因此您不需要重新分配a
。
const b = a.toReversed();
返回一个新的数组,保持原始数组不变。 - undefined
Array.prototype.reverse()
是你需要做这个工作的全部内容。请参见兼容性表。
var myArray = [20, 40, 80, 100];
var revMyArr = [].concat(myArray).reverse();
console.log(revMyArr);
// [100, 80, 40, 20]
concat
方法将对象引用复制到新数组中。原始数组和新数组都指向同一对象... - Mohammad Usman这是一个实用的方法。
const array = [1,2,3,4,5,6,"taco"];
function reverse(array){
return array.map((item,idx) => array[array.length-1-idx])
}
20字节
let reverse=a=>[...a].map(a.pop,a)
[...a]
克隆了该数组,.map(a.pop, a)
弹出该数组(返回数组的最后一个元素)并将其推入新数组,这导致形成一个反转的数组。 - Derek 朕會功夫map
的第二个参数确保使用 a
作为 this
执行 pop
,就像你执行 a.pop()
一样。 - trincot[].pop
而不是a.pop
:它们是*完全相同的函数。当map
的实现执行该函数时,它不知道应该在哪个数组上执行。如果您不告诉它,它将失败。map
的第二个参数提供了map
所需的信息。 - trincotconst original = [1, 2, 3, 4];
const reversed = [...original].reverse(); // 4 3 2 1
简洁并保持原意不变。
reveresed = [...array].reverse()
我见过的最简短的反转方法是这个:
let reverse = a=>a.sort(a=>1)
[1,2,3,4].sort(a=>1)
返回了正确的答案。
这个想法与 sort 方法如何接受排序算法密切相关,因为它是逐个进行排序,所以总是会交换。 - Elia Grady两种方式:
counter loop
function reverseArray(a) {
var rA = []
for (var i = a.length; i > 0; i--) {
rA.push(a[i - 1])
}
return rA;
}
Using .reverse()
function reverseArray(a) {
return a.reverse()
}
function reverse(a){
for(i=0,j=a.length-1;i<j;)a[i]=a[j]+(a[j--]=a[i++],0)
}
仅供娱乐,这里有一个替代实现,比原生的.reverse
方法更快。