1、避免多条件并列
if (status === 'process' || status === 'wait' || status === 'fail') {
doSomething()
}
这种写法语义性、可读性都不太好。可以通过switch case
或includes
这种进行改造。
switch(status) {
case 'process':
case 'wait':
case 'fail':
doSomething()
}
const enum = ['process', 'wait', 'fail']
if (enum.includes(status)) {
doSomething()
}
2、数组扁平化
-
2-1、递归
var arr = [1, [2, [3, 4]]];
function flatten(arr) {
var result = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
}
console.log(flatten(arr));
2-2、reduce
var arr = [1, [2, [3, 4]]];
function flatten(arr) {
return arr.reduce(function (prev, next) {
return prev.concat(Array.isArray(next) ? flatten(next) : next);
}, []);
}
console.log(flatten(arr));
3、短路条件句
如果你想在某个条件逻辑值为true时,执行某个函数,就像这样:
if (condition) {
dosomething()
}
这时,你可以这样子运用短路:
condition && dosomething()
4、字符串中取数字
//String.match(/\d+/g)
"共 140 条111".match(/\d+/g) //["140", "111"]
5、字符串排序
var arr = [
{menu: "171001"},
{menu: "171003"},
{menu: "171002"},
{menu: "17100201"},
{menu: "171004"},
{menu: "17100202"}
]
var newArr = arr.sort(function(a,b){return a.menu.localeCompare(b.menu)})
console.log(newArr)