Javscript/ES6的数组、Map和Set

  数组在JS6/ES2015中主要提供了数组解构函数,能够让我们分配数组中多个值到数组的多个变量:

let users = ["sam", "tom", "peter"];  
let [a, b, c] = users  
console.log(a, b, c) 
// logs 'sam tom peter'   

 

空格是作为忽略该元素使用,能作为函数返回数组时使用。

再看下面数组解构代码:

function foo() {
    return [1,2,3];
}
let arr = foo(); // [1,2,3]  
let [a, b, c] = foo();
console.log(a, b, c); // 1 2 3  
function bar() {
    return {
        x: 4,
        y: 5, 
        z: 6 
   };
}
let {x: x, y: y, z: z} = bar();
console.log(x, y, z); // 4 5 6 

 

下面看看对数组的for循环,For是从数组中直接读取每个元素,然后分配给变量:

let users = ["sam", "tom", "peter"];  
for (let user of users) {  
  console.log(user); // 打印输出 sam tom peter
} 

 

再看看Array.Find,返回数组中满足查询条件的第一个元素:

let userAdmin = userArray.find( (user) => {  
  return user.admin; // 返回满足user.admin是真的第一个对象 
}); 

 

Map是一种由key/value组成的集合,寻常简单数据有利,相比以前使用对象实现key/value功能,Map提供了数据遍历等更强大的数据处理函数。

let user = { name: "Sam" };  
let replies = new Map();  
replies.set(user, 5);  
replies.get(user); // returns 5   

 

另外还有WeakMap,在WeakMap中,原始数据类型String字符串 number数字和boolean是不允许的,WeakMaps是不能遍历的,不能用于循环,对于节省内存比较好。

数组并不强迫元素的唯一性,重复元素是可以的,但是Set是强调唯一性,Set也是可以被遍历的,能够使用for循环和解构。WeakSet是有内存效率的,节省内存,但是不能用于循环,因为没有办法从中读取值。WeakSet适合不可变对象。

 

Javascript6简明手册