JSON 处理
ES5 提供了一个全局的 JSON 对象,做序列化和反序列化操作,并能在处理时做简单的过滤和转换。
将 JSON 对象序列化为字符串:
语法格式:JSON.stringify(value [, replacer [, space]])
replacer 用来做过滤和转换,space 用来控制格式化的缩进空格数
JSON.stringify({name: "lee", age: 18}); // '{"name":"lee","age":18}'
JSON.stringify({name: "lee", age: 18}, null, 2) // '{\n "name": "lee",\n "age": 18\n}'
JSON.stringify({name: "lee", age: 18}, (key, value) => key === "age" ? undefined : value ) // '{"name":"lee"}'
将字符串反序列化为 JSON 对象:
语法格式:JSON.parse(text [, reviver])
reviver 用来做过滤和转换
JSON.parse('{"name":"lee","age":18}', (key, value) => key === "age" ? undefined : value); // {name: 'lee'}
replacer、reviver 方法类似,对每个键值对做过滤和转换,如果返回 undefined,则不输出该键值对。
丰富数组操作
类型判断 Array.isArray
typeof 只能检测对象类型是不是 object,不能区分对象是 Date、Array 还是其他对象类型
typeof [1, 2, 3]; // 'object'
typeof new Date(); // 'object
可以通过方法 Object.prototype.toString 判断对象类型
Object.prototype.toString.apply([1, 2, 3]); // '[object Array]'
Object.prototype.toString.apply(new Date()); // '[object Date]'
ES5 对数组增加了简单的判别方法:
Array.isArray([1, 2, 3]); // true
ES5 给 Array 原型增加了一些其他的方法:
数组遍历 Array.prototype.forEach
语法格式:Array.prototype.forEach(callback, [ thisObject]))
callback 回调函数有三个参数可用,value 是值、index 是索引、array 是数组本身
let sum = 0;
[1, 2, 3, 4].forEach((value, index, array) => sum += value); // sum = 10