如何解决无法弄清楚如何返回正确的数组
我遇到了问题,但是找不到最佳解决方案。在这里,我希望能够快速找到可用的露营地。我试图返回一个数组,其中包含所有当前未保留的露营地编号。我以为我已经弄清楚了所有代码,直到我发现我的代码似乎在返回字符串而不是值。
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved = false){//If the campground is available
} result = result + campgrounds[i].number
}
return result;
}
这是露营地的物体。我试图从所有未预留的营地返回数字变量。这是我要返回的示例。 [1,5,12,18,23]
let campgrounds = [
{ number: 1,view: 'ocean',partySize: 8,isReserved: false },{ number: 5,partySize: 4,{ number: 12,isReserved: true },{ number: 18,view: 'forest',{ number: 23,isReserved: true }
]
解决方法
现在,您要在此行中将值'isReserved'设置为false:
if (campgrounds[i].isReserved = false){//If the campground is available
=是一个集合,==是一个测试。试试这个:
if (campgrounds[i].isReserved == false){//If the campground is available
,
result = result + campgrounds[i].number
应该在IF STATEMENT
也请使用== insead of
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved = false){//If the campground is available
result = result + campgrounds[i].number
}
}
return result;
}
,
您需要使用比较运算符(==)而不是赋值运算符(=)评估条件,然后将该值压入结果数组。
let campgrounds = [
{ number: 1,view: 'ocean',partySize: 8,isReserved: false },{ number: 5,partySize: 4,{ number: 12,isReserved: true },{ number: 18,view: 'forest',{ number: 23,isReserved: true }
]
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved == false){//If the campground is available
result.push(campgrounds[i].number);
}
}
return result;
}
console.log(availableCampsites(campgrounds))
,
result = result + campgrounds[i].number
这不是将值添加到数组的正确方法。改用它:
result.push(campgrounds[i].number)
您还使用=
运算符,它是一个赋值运算符,而不是比较运算符。
所以您的最终代码变为:
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved == false){//If the campground is available
} result.push(campgrounds[i].number);
}
return result;
}
,
您可以像这样更加整洁:
function availableCampsites(campgrounds){
return campgrounds.filter(c => c.isReserved === false)
.map(c => c.number);
}
它首先将数组过滤为所需的数组,然后将过滤后的结果映射到其number
属性的新数组。
我在这里看到的三个问题:
-
您没有检查自己认为状况如何-实际上,您没有检查任何内容:
if (campgrounds[i].isReserved = false)
此行将camgrounds [i] .isReserved的值设置。要检查是否相等,您需要使用==
或===
(您可以自己查看两者之间的区别,这无关紧要)。 -
添加到结果中的行位于函数括号之外。它必须位于符合您条件的
{}
内(按照上述1进行修复后) -
您不应该使用Java中的
+
添加到数组。它奇怪地将其字符串化,并将您的+
操作数附加到末尾。您想使用数组方法,例如push
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Arrayresult.push(campgrounds[i].number)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。