Sam*_*ack -4 javascript arrays
有这样的数组
myArray = ["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null];
Run Code Online (Sandbox Code Playgroud)
有没有一种方法来获取最后一个非null的元素?
在这种情况下应该是423.2。
小智 7
另一种方法是Array#reduce():
var myArray = ["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null];
var last = myArray.reduce((acc, curr) => curr ? curr : acc);
console.log(last);Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用过滤掉null项目.filter,然后使用来获取最后一个元素.slice:
lastNonNull = myArray.filter(x => x != null).slice(-1)[0]
console.log(lastNonNull) // 432.2
Run Code Online (Sandbox Code Playgroud)
要对此进行细分:
myArray
.filter(x => x != null) // returns ["test", 32.5, 11.3, 0.65, 533.2, 423.2]
.slice(-1) // returns [423.2]
[0] // returns 423.2
Run Code Online (Sandbox Code Playgroud)
使用reverse和find
["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null].reverse().find( s => s != null )
Run Code Online (Sandbox Code Playgroud)
或者只是一个reduceRight
var arr = ["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null]
arr.reduceRight( (a,c) => ( c != null && a == null ? c : a) , null)
Run Code Online (Sandbox Code Playgroud)