作者: Lars Kappert
原文: http://www.smashingmagazine.com/2015/10/es6-whats-new-next-version-javascript/
译:王瑾南 陈万幸
野狗官网: https://www.wilddog.com/
野狗官博: https://blog.wilddog.com
昨天因为标题问题被大家吐槽了,稍微修改一下。
上一部分介绍了变量,这部分来介绍一下字符串和数组。
方法
String 原型已经有几个简单的方法,其中的大多数是借助于 indexOf()方法来实现:
'my string'.startsWith('my'); //true
'my string'.endsWith('my'); // false
'my string'.includes('str'); // true
现在添加了一个创建重复字符串的简单方法:
'my '.repeat(3); // 'my my my '
模板文本
模版文本提供一个简单方法来创建字符串和插入字符串。你可能对它的语法已经非常熟悉,使用 $ 和 花括号: ${..}。模版文本是由花括号括起来的,下面有一个示例:
let name = 'John',
apples = 5,
pears = 7,
bananas = function() { return 3;
}
console.log(`This is ${name}.`);
console.log(`He carries ${apples} apples, ${pears} pears, and ${bananas()} bananas.`);
// ES5 equivalent:console.log('He carries ' + apples + ' apples, ' + pears + ' pears, and ' + bananas() +' bananas.');
上面的示例相比 ES5 ,仅仅是方便了字符串连接。模版文本也适用于多行字符串。空白文本也是字符串的一部分:
let x = `1...
2...
3 lines long!`; // Yay
// ES5 equivalents:var x = "1...\n" +
"2...\n" +
"3 lines long!";
var x = "1...\n2...\n3 lines long!";
Array 对象现在有一些新的静态类方法,以及 Array 原型的新方法。
Array.from ,将一个类数组对象或可迭代对象转换成真实的数组。示例:
新的 Map 和 Set 。
let itemElements = document.querySelectorAll('.items');let items = Array.from(itemElements);
items.forEach(function(element) {
console.log(element.nodeType)
});
// A workaround often used in ES5:let items = Array.prototype.slice.call(itemElements);
在上面的例子中可以看到, items 数组有 foreach 方法,但是 itemelements 是没有的。
Array.from 有一个有趣的特点:第二个参数是可选参数 mapfunction 。这样就可以在调用时创建一个映射数组:
let navElements = document.querySelectorAll('nav li');let navTitles = Array.from(navElements, el => el.textContent);
Array.of 相当于一个 Array 构造器,当传入一个数字参数时返回的数组会只包含此参数(即只有一个元素),结构是 Array.of 有优于 new Array() 。然而,在大多数情况下,我们更习惯于使用数组直接量。
let x = new Array(3); // [undefined, undefined, undefined]
let y = Array.of(8); // [8]
let z = [1, 2, 3]; // Array literal
最后重要的一点, Array 原型也增加了一些方法。我相信 find 方法将会受到大多数 JavaScript 开发者的欢迎。
fill 根据所给参数来更改数组元素的值.
[5, 1, 10, 8].find(n => n === 10) // 10
[5, 1, 10, 8].findIndex(n => n === 10) // 2
[0, 0, 0].fill(7) // [7, 7, 7]
[0, 0, 0, 0, 0].fill(7, 1, 3) // [0, 7, 7, 7, 0]
此文为译文,如有问题请加 QQ 群 105454604 联系群主