任务十四:零基础JavaScript编码(二)
任务目的
- 在上一任务基础上继续JavaScript的体验
- 学习JavaScript中的if判断语法,for循环语法
- 学习JavaScript中的数组对象
- 学习如何读取、处理数据,并动态创建、修改DOM中的内容
任务描述
- 参考以下示例代码,页面加载后,将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示在网页上
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>IFE JavaScript Task 01</title>
</head>
<body> <h3>污染城市列表</h3>
<ul id="aqi-list">
<!--
<li>第一名:福州(样例),10</li>
<li>第二名:福州(样例),10</li> -->
</ul> <script type="text/javascript"> var aqiData = [
["北京", 90],
["上海", 50],
["福州", 10],
["广州", 50],
["成都", 90],
["西安", 100]
]; (function () { /*
在注释下方编写代码
遍历读取aqiData中各个城市的数据
将空气质量指数大于60的城市显示到aqi-list的列表中
*/ })(); </script>
</body>
</html>
任务注意事项
- 实现简单功能的同时,请仔细学习JavaScript基本语法、事件、DOM相关的知识
- 请注意代码风格的整齐、优雅
- 代码中含有必要的注释
- 其中的数据以及60的判断逻辑可以自行设定
- 建议不使用任何第三方库、框架
- 示例代码仅为示例,可以直接使用,也可以完全自己重写
任务完成及总结:
实现思路:首先将符合条件的城市刷选出来,然后进行排序,最后将结果输出,下面请看相关案例。
案例一:
(function () {
//选出空气质量指数大于60的城市
var sortCount = aqiData.filter(function(item){
return (item[1] > 60);
});
//对大于60的城市进行从大到小排序
sortCount.sort(function(a, b){
return b[1] - a[1];
});
var aqiList = document.getElementById('aqi-list');
//将结果显示
for(var i = 0; i < sortCount.length; i++){
aqiList.innerHTML += '<li>第' + (i + 1) + '名:' + sortCount[i][0] + '(样例) , ' + sortCount[i][1] + '</li>';
}
})();
利用filter函数将符合相关条件的城市选出来,同时把所有刷选出的数据存储在新数组中。更多详情请戳JS中filter()方法。接着根据新数组的第二个数值进行从大到小的排序,更多sort()知识请戳JS中sort()方法。其中还能继续优化,把innerHTML替换为createTextNode(),如:
for(var i = ; i < sortCount.length; i++){
//aqiList.innerHTML += '<li>第' + (i + 1) + '名:' + sortCount[i][0] + '(样例) , ' + sortCount[i][1] + '</li>';
var li = document.createElement("li");
li.appendChild(document.createTextNode("第"+(i+)+"名:"+sortCount[i][]+","+sortCount[i][]));
aqiList.appendChild(li);
}
案例二:
(function () {
var oList = document.getElementById("aqi-list");
var arr = ["一","二","三","四","五"];
//sort 从大到小
aqiData.sort(function(a,b){
return b[]-a[];
});
oList.innerHTML = "";
for(var i=;i<aqiData.length;i++){ if(aqiData[i][]>){
//创建一个节点
var oLi = document.createElement("li");
oLi.innerHTML = '第'+arr[i]+'名:'+aqiData[i][]+','+aqiData[i][];
//向节点oList添加子节点oLi
oList.appendChild(oLi);
}
}
})();
思路大同小异,只是在运算速度上要比案例一要慢,原因是含有双重循环,并且环内appendChild重排会引起性能下降。更多详情请戳JS中appendChild()方法。
案例三:
(function () {
var chineseNumbers = ["一","二","三","四","五","六","七","八","九","十"]; var contentStr = "";
aqiData.filter(function(element){return element[] > ;})
.sort(function (d1,d2){ return d2[] - d1[]; })
.forEach(function (element,index){
contentStr += "<li>第" + chineseNumbers[index] + "名:" + element[] + "," + element[] + "</li>";
}); document.getElementById("aqi-list").innerHTML = contentStr; })();
该案例别样的使用了链式调用,以及使用了ES5新增的array.forEach方法来代替for循环遍历处理数组元素,并使用了element.innerHTML属性一次性改变元素的DOM结构
任务十四:零基础JavaScript编码(二)的更多相关文章
- 零基础JavaScript编码(二)
任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...
- 零基础JavaScript编码(三)总结
任务目的 在上一任务基础上继续JavaScript的体验 接触一下JavaScript中的高级选择器 学习JavaScript中的数组对象遍历.读写.排序等操作 学习简单的字符串处理操作 任务描述 参 ...
- 零基础JavaScript编码(一)
任务目的 JavaScript初体验 初步明白JavaScript的简单基本语法,如变量.函数 初步了解JavaScript的事件是什么 初步了解JavaScript中的DOM是什么 任务描述 参考以 ...
- 任务十六:零基础JavaScript编码(四)
任务目的 在上一任务基础上继续JavaScript的体验 深入学习JavaScript的事件机制及DOM操作 学习事件代理机制 学习简单的表单验证功能 学习外部加载JavaScript文件 任务描述 ...
- 任务十五:零基础JavaScript编码(三)
任务目的 在上一任务基础上继续JavaScript的体验 接触一下JavaScript中的高级选择器 学习JavaScript中的数组对象遍历.读写.排序等操作 学习简单的字符串处理操作 任务描述 参 ...
- 任务十七:零基础JavaScript编码(五)
任务目的 在上一任务基础上继续JavaScript的体验 接触更加复杂的表单对象 实现页面上的一个完整交互功能 用DOM实现一个柱状图图表 任务描述 参考以下示例代码,原始数据包含几个城市的空气质量指 ...
- 任务十三:零基础JavaScript编码(一)
任务目的 JavaScript初体验 初步明白JavaScript的简单基本语法,如变量.函数 初步了解JavaScript的事件是什么 初步了解JavaScript中的DOM是什么 任务描述 参考以 ...
- 二十四. Python基础(24)--封装
二十四. Python基础(24)--封装 ● 知识结构 ● 类属性和__slots__属性 class Student(object): grade = 3 # 也可以写在__slots ...
- IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)
1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...
随机推荐
- iOS开发ApplePay的介绍与实现
1.Apple Pay的介绍 Apple Pay官方 1.1 Apple Pay概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在i ...
- Monkey基本使用(转载)
什么是 Monkey Monkey 是一个 Android 自动化测试小工具.主要用于Android 的压力测试, 主要目的就是为了测试app 是否会Crash. Monkey 特点 顾名思义,Mon ...
- python 中mysql数据库的读写
1.读取数据库 import pymysql id=[] name=[] explain=[] db=pymysql.Connection(host=,user="root", p ...
- hive DML
1.load files into tables 把文件中的数据加载到表中(表必须先建好) 语法是: load data [local] inpath 'filepath' [overwrite] i ...
- 【数据服务中间件】一、HttpServlet
一.概念 Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http GenericServlet和HttpServlet 3个方法代表了Servle ...
- C# checked和unchecked运算符
1.作用 checked和unchecked运算符用于CLR(公共语言运行时)强制对它们所作用的代码块,进行(不进行)代码溢出检测 2.示例说明 有代码如下: static void Main(str ...
- OSI与TCP/IP协议区别
1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...
- Wamp设置虚拟目录
1. 默认安装 wamp后,工作目录为"..../wamp/www" 也就是PHP文件只有放在此目录下才能打得开,打开Apache的配置文件httpd.conf可以看到: 这么两行 ...
- redis虚拟内存---官方文档
http://redis.io/topics/internals-vm Virtual Memory technical specification This document details the ...
- 解决IntelliJ IDEA导入本地项目不能切换github容器的问题
问题场景: 复制本地一个github项目到IDEA中,本地项目容器是A,新项目的容器仍然是A. 解决方法: 1.打开项目在资源管理器中的位置,隐藏的文件项目查看√上,删掉.git文件夹. 2. 3.选 ...