** 一、JSON数组格式转换 **
- 声明数组
let json = {
'0': 'jspang',
'1': '技术胖',
'2': '大胖逼逼叨',
length:3//必须带length特殊的json格式都可以轻松使用ES6的语法转变成数组
}
- 对象转换成数组Array.from(xxx)
let json = {
'0': 'jspang',
'1': '技术胖',
'2': '大胖逼逼叨',
length:3
}
let arr=Array.from(json);//ES6中绝大部分的Array操作都存在于Array对象里
console.log(arr)
- Array.of()方法 负责把一堆文本或者变量转换成数组
let arr =Array.of(3,4,5,6);
console.log(arr);
let arr =Array.of('技术胖','jspang','大胖逼逼叨');
console.log(arr);
二、数组的遍历
1. for…of循环:
2.需要数组的索引
let arr=['jspang','技术胖','大胖逼逼叨']
for (let index of arr.keys()){
console.log(index);
}
3.同时输出数组的内容和索引:
let arr=['jspang','技术胖','大胖逼逼叨']
for (let [index,val] of arr.entries()){
console.log(index+':'+val);
}
三、Symbol.iterator 和 for of 是es6的新特性 可以为对象设置 自己的迭代器
ES6中内置了一些Symbol,其中最重要的一个恐怕就是Symbol.iterator了,相当于迭代器的接口,只有对象里有这个symbol的属性,才可以认为此对象是可迭代的。
Object身上没有Symbol.iterator,当直接使用时会报错,出现错误,错误提示为:
JS中哪些对象里实现了这个接口呢?常见的有Array,String,arguments,还有后面高级的数据结构,如Set,Map等。
- 其实访问了 arr的迭代器调用next的方法的返回值中的value属性
- object 是不支持迭代器的,于是我们DIY一个:
var obj ={
name:1,
age:13,
home:"xxxx"
}
Object.defineProperty(obj,Symbol.iterator,{
enumerable:false, //是否可枚举
writerable:false, //是否可写
configurable:true, //是否删除
value:function(){
var that = this;
var nowindex = 0;
var key = Object.keys(that);
return {
next:function(){
var h = {
value:that[key[nowindex]],
done:(nowindex+1 >key.length )
}
nowindex++;
return h
}
}
}
})
for (var y of obj){
console.log(y)
}
echo
1
13
xxxx
原文链接:blog.csdn.net/gjc9620/art… 3.使用iterator 之外,我们还可以使用 yield 语法来实现循环,yield相对简单一些,只要通过 yield 语句把值返回即可
let students = {
[Symbol.iterator]: function*() {
for(var i=0;i<=100;i++) {
yield i;
}
}
}
for(var s of students) {
console.log(s);
}
4.yield 和 iterator什么关系。这个我还不能确定,不过从用法上来说,可以基本认为 yield 只是 iterator 的语法糖,它其实就是最终生成了一个 iterator
let students = {
[Symbol.iterator]: function*() {
for(var i=0;i<=100;i++) {
yield i;
}
}
}
var iterator = students[Symbol.iterator]();
var s=iterator.next();
while(!s.done) {
console.log(s.value);
s=iterator.next();
}
yield 语句其实就是生成了一个 iterator ,完全和直接写 iterator 没区别,不过好处是使代码变得简洁明了,因此建议直接使用 yield 语法而不要费力的去写 iterator。 原文链接:blog.csdn.net/lihongxun94…