es6如何修改json数组里的某个值_关于ES6的数组字符串方法

注:ES6的一些新属性会显示语法错误,不过不会影响效果,在Languages里面也可以调;

let:用来定义变量

特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明;比如:

var a = 12; var a = 5; alert(a);//5;

let a = 12; let a = 5; alert(a);//报错;Identifier ‘a‘ has already been declared

代码块:{}包起来的代码,形成了一个作用域,比如if,for,while,json除外;块级作用域;

var 只有函数作用域;

用处:

自执行函数:

for(let i = 0; i < aBtn.length; i++){

aBtn[i].onclick = function(){

alert(i);//0,1,2

}

}

*** 块级作用域其实就是匿名函数自执行;

const:一般用来定义常量

常量:不允许修改;有些时候定的变量不希望被改变,这个不希望被改变的值就是常量;比如:

let a = 5;

a = 12;

alert(a);//12;

其实希望a的值是5,但是下面有相同的变量名字覆盖了let a的值;这个时候就要用到const;

const一旦被赋值,以后再也无法修改,比如:

const a = 12;

a = 5;

alert(a);//Assignment to constant variable.

const必须给初始值,比如:

const a;

a = 12;

alert(a);//Missing initializer in const declaration;

正确的写法: const a = 12;因为const定义的变量以后再也没法赋值了;

const不能重复声明,比如:

const a = 12;

const a = 5;

alert(a);//Identifier ‘a‘ has already been declared;

用途:防止意外修改变量;

关于字符串连接

之前定义字符串:

var str = ‘‘;或者 var str = "";

ES6定义字符串:

var str1 = `elcome;

var str2 = `w`;

ES6连接字符串:${变量名}

var str3 = `${str2}${str1}`; //输出:welcome;

解构赋值

ES6之前:

//var a = 12;

//var b = 5;

//var c = 10;

//alert(a);

ES6:

var [a,b,c] = [12,5,10];//数组的形式定义;

alert(a);//访问某一项

console.log(a);//打印出全部的值;

var {a,b,c} = {a:12,b:5,c:10};//json的形式定义;跟顺序无关;

alert(a);//访问某一项;

console.log(a,b,c);//打印出全部的值;

使用ES6定义的时候注意模式匹配:

模式匹配:左边的样子和右边的一样;

var [a,[b,c],d] = [1,[3,4],5];

console.log(a,b,c,d);

解构赋值默认值的写法:

var {time=12,id=321} = {};

console.log(time,id);//这里的time和id都是默认值;因为等号右边没有赋值;所以需要给默认值,如果不给默认值的的话是undefined;

Array.from():复制一个数组

var arr = [1,2,3,4];

var arr2 = Array.from(arr);

arr2.pop();//删除arr2中的某一项不会影响到arr;

console.log(arr,arr2);

快速复制一个数组: ···

实例1:

var arr = [1,2,3,4];

var arr2 = [...arr1];//引用arr1里面的内容;

arr2.pop();

console.log(arr2);

实例2:

function show(...args){

console.log(args);//1,2,3,4;这里的值也就是arguments的每一个;

args.push(5);//往arguments里面添加一个;

console.log(args);//往arguments里面添加一个5,这在ES6之前是不允许的;

}

show(1,2,3,4);

新增循环 for of

for of 用来遍历(迭代/循环)整个对象;表现类似于for in;

var arr = [‘banana‘,‘pear‘,‘orange‘,‘apple‘];

for(var i in arr){//i是索引;

console.log(i);//0,1,2,3,索引;

}

for(var i of arr){//i是值;

console.log(i);//banana,pear,orange,apple;

}

for of 循环不能用来循环json,可以循环数组,for of的真正目的是为了循环map对象;实例如下:

var json = {

‘a‘:‘12‘,

‘b‘:‘11‘,

‘c‘:‘10‘,

};

for(var name of json){

console.log(name);//json[Symbol.iterator] is not a function(…)

}

for of 也可以循环数组:

只循环值:for(var name of arr){ console.log(name) };

只循环索引:for(var name of arr.keys()){ console.log(name) };

索引和值都循环: for(var name of arr.entries()){ console.log(name) };

Map对象

和json相似,也是键值对的形式 key-value;Map对象主要是为了和for of循环配合而生。

怎么得到一个Map对象:var oMap = new Map();

设置:oMap.set(name,value);

oMap.set(name,value);//给Map对象设置值;

oMap.set(‘a‘,‘banana‘);

oMap.set(‘b‘,‘pear‘);

console.log(oMap);//{"a" => "banana", "b" => "pear"}

获取:oMap.get(name);

oMap.get(‘a‘);//banana;

删除:oMap.delete(name);

oMap.delete(‘a‘);

循环Map用for of:

var oMap = new Map();

oMap.set(‘a‘,‘banana‘);

oMap.set(‘b‘,‘pear‘);

oMap.set(‘c‘,‘orange‘);

oMap.set(‘d‘,‘apple‘);

for(var name of oMap){ ==>此种写法的本质就是循环了oMap.entries();

console.log(name);//结果中不仅有name,还有value; a,banana b,pear c,orange d,apple

}==>此种写法等价于:

for(var name in oMap.entries()){

console.log(name);

}

//以key-value的形式取值:

for(var [key,value] of oMap){

console.log(key+‘:‘+vlaue);//a:banana b:pear c:orange d:apple

}

只循环key

for(var key of oMap.keys()){

console.log(key);//a,b,c,d

}

支循环value

for(var val of oMap.values()){

console.log(val);//banana,pear,orange,apple

}

箭头函数

ES6之前:

function show(a,b,c){ return a+b+c }

ES6:=>

注意:

箭头函数里面的this指的是window;

在箭头函数中arguments不能使用了;

ES6:给默认值

var move=()=>{

console.log(obj);//undefined;因为obj未传参;有些时候不希望有undefined;这个时候需要给一个默认值;

}

move();

var move=(obj=‘参数必须传递‘)=>{

console.log(obj);//参数必须传递;

}

2016/11/29 16:40:07

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值