6、Fetch 结合 filter 实现快速匹配

涉及特性

  • Promise
    • fetch()
    • then()
    • json()
  • Array
    • filter()
    • map()
    • push()
    • join()
    • Spread syntax 扩展语句
  • RegExp
    • match()
    • replace()

效果

在这里插入图片描述

代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Type Ahead 👀</title>
  <link rel="stylesheet" href="style.css">
</head>

<body>
  <form class="search-form">
    <input type="text" class="search" placeholder="City or State">
    <ul class="suggestions">
      <li>Filter for a city</li>
      <li>or a state</li>
    </ul>
  </form>
  <script>
    const endpoint = 'https://gist.githubusercontent.com/Miserlou/c5cd8364bf9b2420bb29/raw/2bf258763cdddd704f8ffd3ea9a3e81d25e2c6f6/cities.json';
    var cities = [];
    fetch(endpoint).then(blob => blob.json()).then(data => {
      cities.push(...data);
    }).catch(err => conosle.error(err));

    var input = document.querySelector('.search');
    var suggestions = document.querySelector('.suggestions');
    input.addEventListener('change', showCitise);
    input.addEventListener('keyup', showCitise);

    function showCitise(envent) {
      let value = envent.target.value;
      let peck = cities.filter(city => city.city.match(value) || city.state.match(value));
      const items = peck.map(item => {
        const cityName = item.city.replace(value, `<span class="hl">${value}</span>`);
        const stateName = item.state.replace(value, `<span class="hl">${value}</span>`);
        return `
      <li>
        <span class="name">${cityName}, ${stateName}</span>
        <span class="population">${numberWithCommas(item.population)}</span>
      </li>
    `;
      }).join('');// join能够去除数组中的 ,
      suggestions.innerHTML = items;
    };

    function numberWithCommas(x) {// 这个正则很深奥呢
      return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
      /*
      123456789 - 》123,456,789
      23456789 - 》23,456,789
      3456789 - 》3,456,789
      
      */ 
    }

  </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用HttpURLConnection类来实现Fetch请求的发送和响应数据的解析。以下是一个简单的示例: 发送Fetch请求: ```java URL url = new URL("http://example.com/data"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); // 设置请求头 con.setRequestProperty("User-Agent", "Java Fetch"); con.setRequestProperty("Accept", "application/json"); // 发送请求 int responseCode = con.getResponseCode(); // 读取响应数据 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 输出响应数据 System.out.println(response.toString()); ``` 解析响应数据: ```java // 解析JSON格式数据 JSONObject json = new JSONObject(response.toString()); String name = json.getString("name"); int age = json.getInt("age"); JSONArray hobbies = json.getJSONArray("hobbies"); // 解析XML格式数据 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(response.toString())); Document doc = builder.parse(is); String title = doc.getElementsByTagName("title").item(0).getTextContent(); ``` 需要注意的是,以上示例仅仅是一个简单的示例,实际上使用Fetch请求时还需要考虑很多其他因素,比如请求参数、请求头、响应数据格式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值