[英]How do I get all values from an Array that are less than 100?
給定一個對象和一個鍵,我正在創建一個函數,該函數返回一個數組,該數組包含位於給定鍵的數組中小於 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]
知道我錯過了什么嗎?
使用過濾器方法來幫助解決這個問題。
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]
同樣可以使用 ES6 箭頭函數和隱式返回來縮短。
var output = obj['key'].filter(item => item < 100);
使用帶箭頭函數的過濾器將使您的代碼更短。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.