给定一个对象和一个键,我正在创建一个函数,该函数返回一个数组,该数组包含位于给定键的小于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]
知道我错过了什么吗?
答案 0 :(得分:1)
使用过滤方法来帮助解决这个问题。
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);