2 回答
TA贡献1829条经验 获得超13个赞
首先有个疑问
题目中的『要求验证数组中的数字,不小于55且大于7是对的,反之错的』是不是写错了?不小于 55 的数字是一定大于 7 的。
根据你的测试用例,我想题目的意思应该是『数组的每一位都是一个 2 位数组,对于这些每一个数组,验证其第一个数字不小于 55 且第二个数字大于 7』。
this 是『调用方法的主体』
比如:
var obj = {
whoAmI: function () {
console.log(this)
}
}
obj.whoAmI() // 打印出 obj 本身
本题与 this 无关,在本题中不应使用 this
解答此题你应该了解如下两个知识:
数组 .map() 方法的用法
函数的传参
简单讲下:
.map() 方法接受一个函数作为参数,比如你的 check(),对于数组中的每一个值,都会调用 check()。你需要纠正的是,在 check() 里如何拿到数组中当前的值?
事实上,.map() 在调用 check() 时,会把当前的值作为参数传递进去,也就是 check(currentValue)。所以要在 check() 中获取当前的值,只需取第一个参数即可:
function check (value) {
(value[0] >= 55 && value[1] > 7) ? checkResult.push("Right") : checkResult.push("Wrong");
}
这样修改你的解答就正确了。
如何变得更好
事实上,.map() 的返回值也是一个数组。如果你的 check() 有返回值,那么 data.map(check) 的返回值是每一次 check() 返回值构成的数组。
也就是说,correct() 可简化为:
function correct (data) {
function check(value) {
return (value[0] >= 55 && value[1] > 7) ? 'Right' : 'Wrong';
}
return data.map(check)
}
资源
JavaScript 相关的知识,建议你查阅一份相当权威的文档:MDN,比如有关 .map()
的介绍在这里就有。
或者你可以 Google 搜索如『array.map mdn』这样的关键字,通常第一个结果就是 MDN 文档。
希望对你有帮助,望采纳。
TA贡献1982条经验 获得超2个赞
function correct(data){
var checkResult = [];
var check = function(item){
(item[0]>=55&&item[1]>7)?checkResult.push("Right"):checkResult.push("Wrong");
};
data.map(check);
return checkResult;
}
console.log(correct([[45, 12],[55,21],[19, -2],[104, 20]]))
自己先查下map的用法
添加回答
举报