2 回答

TA貢獻1893條經驗 獲得超10個贊
幾乎沒有編輯,因為問題代碼不斷變化。
第一個問題——訪問對象屬性
如果你有一個數組,你可以通過索引訪問它的值。
let array = [1, 2, 3];
let firstItem = array[0];
let secondItem = array[1];
如果你有對象,你可以通過他們的名字訪問它的屬性。
let someObject = { 'name': 'John', 'age': 21 };
let name = someObject.name;
name = someObject['name'];
如果您有對象數組,則可以結合這兩種方法。
let arrayOfObjects = [
{ 'name': 'John', 'age': 21 },
{ 'name': 'Sam', 'age': 23 }
]
let firstObjectsName = arrayOfObjects[0].name;
第二個問題 - 在第一次迭代時退出循環您一進入循環就 調用returnstatement 使得無法進入第二次迭代。您可以將每次迭代的結果存儲在數組中并在最后返回它。
const mustBeInRangeInclusive = ({ userInput, ranges }) => {
let results = [];
let data_num = _.toNumber(userInput);
for (let i = 0; i < ranges.length; i++) {
results.push(data_num >= ranges[i].min && data_num <= ranges[i].max);
}
return results;
};

TA貢獻1155條經驗 獲得超0個贊
這個答案基于 OP 的評論請求
filters
,如果是一個對象,則不能解決問題。
假設您可以更改定義,使用過濾器數組比使用帶有過濾器的對象要容易得多。您可以使用數組every
方法來檢查每個元素是否符合條件。用于some
檢查某些(一個或多個)元素是否符合條件。
const userInput = document.getElementById("user-input");
const ranges = [ // <- changed definition to an array
{ "min": 0, "max": 100 },
{ "min": 50, "max": 150 },
];
userInput.addEventListener("change", () => {
const nr = parseInt(userInput.value, 10);
const coversNr = ({min, max}) => min <= nr && nr <= max;
const withinEveryRange = ranges.every(coversNr);
const withinSomeRange = ranges.some(coversNr);
console.log("withinEveryRange //=>", withinEveryRange);
console.log("withinSomeRange //=>", withinSomeRange );
});
<input id="user-input" type="number" />
添加回答
舉報