做有态度的前端团队

网易FEG前端团队

JS学习笔记——实用的 JS 小技巧

1. 安全的串接字串
假设有一些不确定的变量类型,而你想将它们串接成字符串,这样可能会导致错误。

var one = 1;
var two = 2;
var three = '3';
var result = one + two + three;
// 会得到 "33" 而非 "123"

可以用 concat 来串接字符串:

var one = 1;
var two = 2;
var three = '3';
var result = ''.concat(one, two, three);
// 得到 "123"

2. 把字串转成数字
如果有一个字符串比如 ‘1’, ‘123’ 之类的,而你需要把它转成数字,你可能会这样做:

var one = '1';
var two = '2';
var numberOne = Number(one);    // 1
var numberTwo = parseInt(two);  // 2

但这样可以更简单快速:

var one = '1';
var numberOne = +one; // 1

3. 移除数组中的重复元素
如果有一个数组,里面有一些元素是重复的,可以用这样的方式来移除:

var originArr = [1, 'a', 1, 'a'];
var deduped = originArr.filter(function(el, i, arr){
    return arr.indexOf(el) === i;
});
console.log(deduped); // [1, 'a']

用 ES6 的语法可以写得更简洁:

var originArr = [1, 'a', 1, 'a'];
var deduped = originArr.filter((el, i, arr) => arr.indexOf(el) === i);
console.log(deduped); // [1, 'a']

4. 把二维数组扁平化
有三种不同的解决方法,可以将二维数组合并为单一的数组。
给定一个数组:

var myArray = [[1, 2],[3, 4, 5], [6, 7, 8, 9]];

我们想得到这个结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

方法一:

var myNewArray = [];
for (var i = 0; i < myArray.length; ++i) {
    for (var j = 0; j < myArray[i].length; ++j){
        myNewArray.push(myArray[i][j]);
    }
}
console.log(myNewArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

方法二:

var myNewArray = myArray.reduce(function(prev, curr) {
  return prev.concat(curr);
});
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

方法三:

var myNewArray = [].concat.apply([], myArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

手机阅读请扫描下方二维码: