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" />
添加回答
举报