描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
let res = []
while(head) {
res.unshift(head.val)
head = head.next
}
return res
}
module.exports = {
printListFromTailToHead : printListFromTailToHead
};
JS的数组操作总结:
####创建数组
三种方法:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
var myCars=new Array("Saab","Volvo","BMW");
var myCars=["Saab","Volvo","BMW"];
####访问数组
var name=myCars[0];
####数组是对象
var person = ["Bill", "Gates", 62];
var person = {firstName:"Bill", lastName:"Gates", age:19};
console.log(person.firstName)//Bill
####数组length
var arr = [1, 2, 3];
console.log(arr.length)//3
arr.length = 6;
console.log(arr); // [ 1, 2, 3, <3 empty items> ]
arr.length = 2;
console.log(arr); //[ 1, 2 ]
手动改变arr
var arr = [1, 2, 3];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
####数组indexOf
var arr = [10, 20, '30', 'xyz'];
arr.indexOf(10); // 元素10的索引为0
arr.indexOf(20); // 元素20的索引为1
arr.indexOf(30); // 元素30没有找到,返回-1
arr.indexOf('30'); // 元素'30'的索引为2
寻找元素
####数组slice
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']
arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
aCopy === arr; // false
####push和pop
push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉
var arr = [1, 2];
arr.push('A', 'B'); // 返回Array新的长度: 4
arr; // [1, 2, 'A', 'B']
arr.pop(); // pop()返回'B'
arr; // [1, 2, 'A']
arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次
arr; // []
arr.pop(); // 空数组继续pop不会报错,而是返回undefined
arr; // []
####unshift和shift
如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉:
var arr = [1, 2, 3];
arr.unshift('you are my destiny',2023)
console.log(arr)//[ 'you are my destiny', 2023, 1, 2, 3 ]
####sort
var arr = [1123,-5,3,0.234434,8];
arr.unshift('you are my destiny',2023)
console.log(arr)//[ 'you are my destiny', 2023, 1123, -5, 3, 0.234434, 8 ]
console.log(arr.sort())//[ -5, 0.234434, 1123, 2023, 3, 8, 'you are my destiny' ]
####reverse
var arr = [1123,-5,3,0.234434,8];
console.log(arr.reverse()//[ 8, 0.234434, 3, -5, 1123 ]
####splice
它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素
var arr = ['mom','dad','sister'];
arr.splice(2,2,'grandma')
console.log(arr)//[ 'mom', 'dad', 'grandma' ]
arr.splice(2,2)//从第二个删除两个
console.log(arr)//[ 'mom', 'dad' ]
arr.splice(1,0,'aunt')
console.log(arr)//[ 'mom', 'aunt', 'dad' ]
####concat
var arr = ['A', 'B', 'C'];
var added = arr.concat([1, 2, 3]);
added; // ['A', 'B', 'C', 1, 2, 3]
####join
它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:
var arr = ['mom','dad','sister'];
console.log(arr.join('-love-'))//mom-love-dad-love-sister
var arr = ['mom','dad','sister'];
var st =arr.join('-')
console.log(st)//mom-dad-sister
console.log(arr)//[ 'mom', 'dad', 'sister' ]
join 不会更改array本身的值