一、JSON拓展
1、parse—— 将json字符串转为js对象
JSON.parse(text, reviver)
text:若传入的字符串不符合 JSON 规范,则会抛出 SyntaxError 异常;不允许逗号作为结尾。
reviver(可选):两个参数 为属性名、属性值,返回值为本次处理结果,作用域为当前遍历的对象;
函数的遍历顺序依照从最内层开始,按照层级顺序,依次向外遍历
JSON.parse('{"p": 5}', function (k, v) {
if(k === '') return v; // 如果到了最顶层,则直接返回属性值,
return v * 2; // 否则将属性值变为原来的 2 倍。
}); // { p: 10 }
JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
console.log(k); // 输出当前的属性名,从而得知遍历顺序是从内向外的,
// 最后一个属性名会是个空字符串。结果见下图
return v; // 返回原始属性值,相当于没有传递 reviver 参数。
});
JSON.parse("[1, 2, 3, 4, ]");//不允许逗号作为结尾,
2、stringify——将js值(对象/数组)转为json字符串
JSON.stringify(value , replacer)
value
replacer(可选)
二、数组拓展
1、判断数组的方法:
- Object.prototype.toString.call(obj); //"[object Array]"
- obj.constructor === Array; // true
- obj instanceof Array; // true
- Array.isArray(obj); // true
拓展:类数组转为数组的方法?
①Array.prototype.slice.call(arrayLike)注意能调用call的只有方法,不能[]调用
②[].slice.call(arrayLike);
③Array.from(arrayLike)
2、获取成员的索引:indexOf 、 lastIndexOf
参数:查找的成员
返回值:索引值;不存在返回-1
3、forEach——代替for循环;数组迭代器方法
参数:函数(成员值,索引值,原数组){ }
作用域:window
返回值:始终为undefined
4、map——遍历数组并映射结果
参数:函数(成员值,索引值,原数组){ }
作用域:window
返回值:执行后的数组成员(新的数组)
5、fill——填充数组
6、some——数组中是否有某些成员满足条件
参数:函数(成员值,索引值,原数组){ } 函数return返回值:判断的依据;
some方法返回值:true代表至少有一个满足条件,false代表都不满足条件
对true敏感,遇到满足的停止执行;
7、every——数组中是否都满足条件
参数:函数(成员值,索引值,原数组){ } return返回值:判断的依据;
every方法返回值:true代表所有成员满足条件,false代表都不满足条件
对false敏感,一遇到不满足的就停止执行
8、filter——对数组过滤
参数:函数(成员值,索引值,原数组){ } return返回值:过滤的条件;
filter方法返回值:满足条件的成员组成的新数组
9、reduce——从前向后累加
10、reduceRight——从后向前累加
参数:函数(上一个累积结果,当前成员值,当前索引值,原数组)return返回值上一次累积结果
var arr = [1, 4, 3, 2, 3, 2];
//1、判断数组
Array.isArray(arr); // true
//2、indexOf 、lastIndexOf方法
console.log(arr.indexOf(4)); //1
console.log(arr.lastIndexOf(2)); //5
//3、forEach
var result1 = arr.forEach(function(item, index, arr) {
console.log(this);// window
return item;
})
console.log(result1);//undefined
//4、map
var result2 = arr.map(function(item, index, arr) {
console.