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

时间:2018-03-09 09:47:27

标签: javascript arrays

拥有这样的数组

myArray = ["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null];

有没有办法获取最后一个非null元素?

在这种情况下,它应该是423.2

4 个答案:

答案 0 :(得分:4)

最简单的方法是使用null过滤掉.filter个项目,然后使用.slice获取最后一个元素:

lastNonNull = myArray.filter(x => x != null).slice(-1)[0]
console.log(lastNonNull) // 432.2

稍微打破一下:

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 

答案 1 :(得分:3)

使用reversefind

["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null].reverse().find( s => s != null )

或只有一个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)

答案 2 :(得分:3)

另一种方式是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);

答案 3 :(得分:1)

您可以使用filter过滤非null元素,并使用pop获取最后一个元素。



let myArray = ["test", 32.5, 11.3, 0.65, 533.2, null, 423.2, null, null];
let result = myArray.filter( v => v !== null ).pop();
  
console.log( result );