给定包含数字和字符串的数组,Javascript返回数字小于100

时间:2018-08-04 04:12:16

标签: javascript arrays

下面给出了如何编写一个返回小于100的数字的函数?

const myArray = ['hello', 3, true, 18, 10,, 99 'ten', false]

const isLessThan100 = (array) => {
  // how to do this? Solution enter here
}

我认为它涉及filter方法,但是我不确定如何同时过滤小于100和不是字符串的数字。

谢谢!

4 个答案:

答案 0 :(得分:3)

您可以先检查它是否是数字

const myArray = ['hello', 3, true, 18, 10, 99, 'ten', false];

const isLessThan100 = myArray.filter(item => {
  return (typeof item === "number") && item < 100;
});

答案 1 :(得分:2)

  

typeof运算符返回一个字符串,该字符串指示未评估的操作数的类型。

您可以先检查typeof项是否为number,然后检查其是否小于100

您可以通过删除花括号将代码减少到一行。

按以下方式尝试Array.prototype.filter()

const myArray = ['hello', 3, true, 18, 10,, 99, 'ten', false]

const isLessThan100 = (array) => array.filter(num => typeof(num) === "number" && num < 100);

console.log(isLessThan100(myArray))
const isLessThan100 = (array)

答案 2 :(得分:2)

这是一个使用filter的矮个子:

const myArray = ['hello', 3, true, 18, 10, 99, 101, 'ten', false];

const isLessThan100 = a => a.filter(e => +e === e && e < 100);

console.log(isLessThan100(myArray));

答案 3 :(得分:0)

仅获取单个值,可以减少数组。

const
    array = ['hello', 3, true, 18, 10,, 99, 'ten', false],
    isLessThan100 = array => array.reduce((r, v) =>
        typeof v === 'number' && v < 100 && (typeof r !== 'number' || v > r)
            ? v
            : r,
        undefined);

console.log(isLessThan100(array));