如何从Array中获取小于100的所有值?

时间:2017-06-01 01:12:26

标签: javascript arrays

给定一个对象和一个键,我正在创建一个函数,该函数返回一个数组,该数组包含位于给定键的小于100的数组的所有元素。基本上,如果数组为空,则应返回空阵列。如果数组不包含小于100的元素,则它应返回一个空数组。 如果给定键的属性不是数组,则它应返回一个空数组。 如果键上没有属性,则应返回一个空数组。

到目前为止,这是我的代码:

function getElementsLessThan100AtProperty(obj, key) {
  if(obj.key < 100){
    return obj.key;
  }
}

var obj = {
  key: [1000, 20, 50, 500]
};
var output = getElementsLessThan100AtProperty(obj, 'key');
console.log(output); // --> MUST RETURN [20, 50]

知道我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

使用过滤方法来帮助解决这个问题。

注意:Mozilla JavaScript Docs

  

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

这样的事情可以解决问题:

var obj = {
  key: [1000, 20, 50, 500]
};

var output = obj['key'].filter(function(item){
  return item < 100;
});

console.log(output); // --> MUST RETURN [20, 50]

答案 1 :(得分:1)

将过滤器与arrow function配合使用会使代码更短。

var obj = {
  key: [1000, 20, 50, 500],
};

console.log(obj['key'].filter(item => item < 100));

您还可以使用 reduce 来检查元素是否小于100,然后将值推入累加器。

var obj = {
  key: [1000, 20, 50, 500],
};

var output = obj['key'].reduce((acc, curr) => {
  if (curr < 100) acc.push(curr);
  return acc;
}, []);

console.log(output);