数组中被压入的第一个对象的属性,而不是第二个对象的属性



我正在使用一个数组,试图创建一个函数,该函数根据给定的partySize和视图确定哪些站点可用,换句话说,哪些露营地可用,可以适合派对大小并具有给定的视图。我在数组中得到1的输出,这是正确的,但它没有为露营地数组中的第二个对象添加number属性。

我正在寻找的数组中的输出与当前的参数是"[1,5]"。我花了大约20分钟摆弄代码,试图找出发生了什么。我试着改变我的一些逻辑,但它似乎是正确的。为什么第二个对象的数字没有被推入数组?提前感谢!

const campgrounds = [
{ number: 1, view: "ocean", partySize: 8, isReserved: false },
{ number: 5, view: "ocean", partySize: 4, isReserved: false },
{ number: 12, view: "ocean", partySize: 4, isReserved: true },
{ number: 18, view: "forest", partySize: 4, isReserved: false },
{ number: 23, view: "forest", partySize: 4, isReserved: true },
];
function findMyCampsites(campgrounds, view, partySize){
let sites = []
for (let i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved === false && campgrounds[i].view === view.toLowerCase()
&& campgrounds[i].partySize >= partySize) {
sites.push(campgrounds[i].number)
return sites
} else {
return 'Sorry, no campsites with that view are available to host your party'
}
}
}
console.log(findMyCampsites(campgrounds, 'ocean', 4))

注意在for语句中调用return

你应该把它移开:

const campgrounds = [
{ number: 1, view: 'ocean', partySize: 8, isReserved: false },
{ number: 5, view: 'ocean', partySize: 4, isReserved: false },
{ number: 12, view: 'ocean', partySize: 4, isReserved: true },
{ number: 18, view: 'forest', partySize: 4, isReserved: false },
{ number: 23, view: 'forest', partySize: 4, isReserved: true },
];
function findMyCampsites(campgrounds, view, partySize) {
const sites = [];
for (let i = 0; i < campgrounds.length; i++) {
if (
campgrounds[i].isReserved === false &&
campgrounds[i].view === view.toLowerCase() &&
campgrounds[i].partySize >= partySize
) {
sites.push(campgrounds[i].number);
}
}
if (!sites.length) {
return 'Sorry, no campsites with that view are available to host your party';
}
return sites;
}
const result = findMyCampsites(campgrounds, 'ocean', 4);
console.log(result);

另外,我会推荐一个更实用的解决方案,使用Array.prototype.find()和Array.prototype.map()

const campgrounds = [
{ number: 1, view: 'ocean', partySize: 8, isReserved: false },
{ number: 5, view: 'ocean', partySize: 4, isReserved: false },
{ number: 12, view: 'ocean', partySize: 4, isReserved: true },
{ number: 18, view: 'forest', partySize: 4, isReserved: false },
{ number: 23, view: 'forest', partySize: 4, isReserved: true },
]
const findMyCampsites = (campgrounds, view, partySize) => {
const sites = campgrounds
.filter(
(s) =>
s.isReserved === false &&
s.view === view.toLowerCase() &&
s.partySize >= partySize
)
.map(({ number: n }) => n)
if (!sites.length) {
return 'Sorry, no campsites with that view are available to host your party'
}
return sites
}
const result = findMyCampsites(campgrounds, 'ocean', 4)
console.log(result);

最新更新