学习指标:
节数 | 知识点 | 要求 |
---|---|---|
第一节 数组去重 | 数组去重 | 理解 |
第二节 数组排序 | 数组排序 | 理解 |
第三节 json 概述 | json 概述 | 把握 |
第四节 json 办法 | json 办法 | 把握 |
第五节 json 解析 | json 解析 | 把握 |
一、数组去重
数组去重是指:从数组中找到雷同的元素,并将雷同的元素删除。
保障数组中的每个元素都是举世无双的操作。
1.1.indexOf 去重
根本思维是:利用数组的 indexOf 办法,目标是寻找存入参数在数组中第一次呈现的地位。
毛病:实现这个办法的时候会遍历数组直到找到指标为止,消耗掉很多工夫。
var arr = [1,2,1,3,1,4**,2,3];
var arr2 =[];
for(var i=0;i
最后 arr2 中没有元素。
循环判断,
只有 arr 中的元素不在 arr2 中
就把 arr 中的这个元素存入 arr2 中
那么最初 arr2 中的元素就是 arr 中所有不反复的元素
1.3.hash 表去重
根本思维是:将曾经呈现过的元素当做 属性名 ,存入一个object 内,下标的援用要比用 indexOf 搜寻数组快的多
毛病:内存占用很多,以就义空间来换取工夫。
**var arr = [1,2,1,3,1,4];
var result = []
var hash = {};
for (var i = 0; arr[i] != undefined; i++) {
if (!hash[arr[i]]) {
result.push(arr[i]);**
hash[arr[i]] = true;
**}
}**
最后 result 中没有元素
hash 对象中没有属性
始终循环,直到数组元素是 null 为止
判断如果:
【hash 对象】中,没有名为
【以后 arr 元素】的属性
则
为新数组 result 中增加这个元素
并为 hash 对象增加这个属性
二、数组排序
2.1 冒泡排序
冒泡排序法:
数组当中 两两相邻的元素比拟,如果前一个比后一个大,那么两个数组元素就替换(就是把小的放后面),最终会找到一个最大的元素,放到最初面,而后再一次的循环比拟。
$arr=[100,90,98,70,85,60,87]
第 1 次冒泡:90,98,70,85,60,87,100
第 2 次冒泡:90,70,85,60,87,98,100
第 3 次冒泡:70,85,60,87,90,98,100
第 4 次冒泡:70,60,85,87,90,98,100
第 5 次冒泡:60,70,85,87,90,98,100
第 6 次冒泡:60,70,85,87,90,98,100
2.2. 疾速排序
疾速排序“的思维很简略,整个排序过程只须要三步:
(1)在数据集之中,抉择一个元素作为“基准”(pivot)。
(2)所有小于“基准”的元素,都移到“基准”的右边;所有大于“基准”的元素,都移到“基准”的左边。
(3)对 ” 基准 ” 右边和左边的两个子集,一直反复第一步和第二步,直到所有子集只剩下一个元素为止。
2.3 递归函数
可能本人调用本人的函数称为递归函数。
能够说递归是编程思维当中最让人头疼的一种算法也不为过。
上面咱们来看一个递归中最经典的例子
var func = function (x) {
if (x === 1) {
return 1;
} else {
return x*func(x-1);
}
};
这是递归中最经典的一个例子,叫做 N!。
2.4 二分查找
二分查找的前提:有序数组, 天然程序(从小到大程序)
找到两头的数,这个两头的数和你输出的数进行比拟,如果你输出的数比两头的数大,就到后一半数据查找,否则就到前一半数据查找。
反复以上过程,直到找到满足条件的 记录
var arr = [2, 4, 5, 9, 31, 60, 79, 80, 90];
应用原型来做。如果有这个数来输入 true, 没有输入 false.
三、JSON 概述
JSON英文全称 JavaScript Object Notation,是一种轻量级的数据交换格局。它能够存储数据和传输数据。
JSON 是一门独立的语言,用于存储和传输数据的格局,通常用于服务端向网页传递数据。
JSON 语言采纳了 JavaScript 的语法,这意味着在 JavaScript 中解决 JSON 数据不须要任何非凡的 API 或工具包,然而还是须要阐明的一点就是:
JSON 和 Javascript 是两门不同的语言。
JSON的格局仅仅是一个文本,而文本是能够被任何编程语言读取及作为数据格式传递的。
3.1 json 的语法
· 数据在名称 / 值对中
· 数据由逗号分隔
· 大括号保留对象
· 中括号保留数组
JSON 对象在大括号({})中书写:
Var obj = {
“name”:”peter”,
“sex”:”男”,
“age”:25
}
对象能够蕴含多个名称 / 值对:
JSON 数据的书写格局是:名称 / 值对。
名称 / 值对包含字段名称(在双引号中),前面写一个冒号,而后是值
{“name”:”halon”, “sex”:”woman”, “from”:”希腊” }
3.2 JSON 与 JS 对象的区别与比照
区别 | JSON | Javascript |
---|---|---|
含意 | 仅仅是一种数据格式 | 示意类的实例 |
传输 | 能够跨平台数据传输,速度快 | 不能传输 |
体现 | 1. 键值对形式,键名必须加双引号 2. 值不能是办法函数,不能是 undefined/NaN | 1. 键值对形式,键名不加引号 2. 值能够是函数、对象、字符串、数字、boolean 等 |
四、JSON 提供的办法
集体了解,JSON 就是
(1)将【前台的数据(对象、数组等)】转换成【字符串发送给后盾】。
(2)将【后盾回传的数据(字符串)】转换为【一般的数据(对象、数组等)】。
4.1 parse()办法
JSON.parse(后盾传输过去的数据)
反序列化(有时候也被称作 JSON 数据解析,简称为 JSON 解析),
可能把 JSON 字符串转换成 JS 的数据类型。
转换的时候,如果字符串中存在不合乎 JSON 要求的格局,会间接报错。
JSON 解析就是通过某种伎俩,将【后盾回传的字符串数据】转换成【能够间接被应用的数据】的过程。
通常状况下 JS 中的 JSON 解析会间接采纳 JSON 中提供的 JSON.parse 办法来间接转换。
var info = '{"name":"halon","sex":"woman","from":" 希腊 "}'
console.log(JSON.parse(info));
4.2 stringify()办法
JSON.stringify(要往后台传输的数据)
序列化(有时候也被称作 JSON 数据封装或数据加密)
可能把 JS 的数据类型转换成 JSON 字符串。
转换的时候,如果数据中存在不合乎 JSON 要求的格局,会做对应的解决