【问题标题】:Filter data by multiple criteria按多个条件过滤数据
【发布时间】:2021-04-09 14:29:08
【问题描述】:

我需要过滤数据集以在函数中查找与给定条件匹配的数据

例如:

输入/输出示例

findMyCampsites(campgrounds, 'ocean', 8) //-> [1]
findMyCampsites(campgrounds, 'forest', 4) //-> [18]
findMyCampsites(campgrounds, 'forest', 6) //-> 'Sorry, no campsites with that view are available to host your party'

这是给我的数据集

let 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, location, groupSize) {
  var available = []
  for (var i = 0; i < campgrounds.length; i++) {
    if (campgrounds[i].isReserved == false && campgrounds[i].view == location) {
      available.push(campgrounds[i].number)
    }
  }
  return available
}

我的问题是每次我添加 partySize 变量时,无论是通过 else/if 条件语句还是直接添加 else 语句,我总是在输出,我不知道我做错了什么。

诚然,我对此很陌生,所以如果我不清楚添加屏幕截图以帮助解决该屏幕截图,我深表歉意:

【问题讨论】:

  • How do I ask a good question? -> 请勿发布代码、数据、错误消息等的图片 - 复制或键入问题中的文本。请保留将图像用于图表或演示渲染错误,这些无法通过文本准确描述的事情。”
  • 所以,如果我理解正确,您想要创建一个函数来查找在 location 中传递了 view 的露营地,并且 传递的 i>groupSize 小于或等于 partySize...
  • 这是我的确切目标 [写一个函数 findMyCampsites.给定一个露营地数组,一种视图类型为字符串,派对人数为数字,返回一个包含匹配露营地的露营地编号的数组。]
  • 你能解释更多吗? findMyCampsites 函数看起来不错,基于您的预期输出。

标签: javascript arrays function


【解决方案1】:

这对我来说很好。请注意,您应该使用let 而不是var

let 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(location, groupSize)
{
  let available = [];
  for (let i = 0; i < campgrounds.length; i++)
  {
    const campground = campgrounds[i];
    if (campground.isReserved == false && campground.view == location && groupSize <= campground.partySize)
    {
      available.push(campground.number)
    }
  }
  return available;
}



// The following is just for the HTML form
let inputs  = document.querySelectorAll('input');
let submit  = document.querySelector('button');
let results = document.querySelector('div#results');
submit.addEventListener('click', function()
{
  let location = inputs[0].value;
  let groupSize = inputs[1].value;
  results.innerHTML += '<p><b>' + location + ',&nbsp;' + groupSize.toString() + '</b>' + '&nbsp;'.repeat(4) + findMyCampsites(location, groupSize) + '</p>\n';
  inputs[0].value = '';
  inputs[1].value = '';
});
<input id="location" type="text" placeholder="Location">
<input id="groupSize" type="number" placeholder="Group size">
<button>Find</button>
<div id="results">
  
</div>

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多