获取数组的最后一个非空元素

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)


Aar*_*sen 5

最简单的方法是使用过滤掉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)


gur*_*372 5

使用reversefind

["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)