代码片段记录

// 下划线转大驼峰
function titleBigCase(str) {
  return str.toLowerCase().replace(/(?:^|_)[a-z]/g, function(s) {
    return s.toUpperCase().replace(/_/g, '');
  });
};
console.log(titleBigCase('property_id'));
复制代码
// 下划线转小驼峰
function titleCase(str) {
  return str.toLowerCase().replace(/(?:_)[a-z]/g, function(s) {
    return s.toUpperCase().replace(/_/g, '');
  });
};
console.log(titleCase('property_id'));
复制代码
// 小驼峰转下划线
var s = "propertyId";
s = s.replace(/([A-Z])/g, "_$1").toLowerCase();
console.log(s);
复制代码
// 首字母大写
function titleCase(str) {
  return str.replace(/( |^)[a-z]/g, L => L.toUpperCase());
}
复制代码
// 利用 es6 的默认赋值实现函数参数必填
const required = () => { throw new Error('Missing parameter'); };
// The below function will trow an error if either "a" or "b" is missing.
const add = (a = required(), b = required()) => a + b;
add(1, 2); // 3
add(1); // Error: Missing parameter.
复制代码
// 利用 reduce 返回数据可以实现 map 和 filter 的功能
const numbers = [10, 20, 30, 40];
const doubledOver50 = numbers.reduce((finalList, num) => {
  num *= 2; // double each number (i.e. map)
  // filter number > 50
  if (num > 50) {
    finalList.push(num);
  }
  return finalList;
}, []);
复制代码
// 利用 reduce 返回对象 可以实现数组转对象
const cars = ['BMW', 'Benz', 'Benz', 'Tesla', 'BMW', 'Toyota'];
const carsObj = cars.reduce((obj, name) => {
  obj[name] = obj[name] ? obj[name] += 1 : 1;
  return obj;
}, {});
console.log(carsObj); // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }
复制代码
// 利用对象的结构赋值可以实现 去除对象某些 key
const { _internal, tooBig, ...cleanObject } = {
  el1: '1', _internal: 'secret', tooBig: {}, el2: '2', el3: '3',
};
console.log(cleanObject); // {el1: '1', el2: '2', el3: '3'}
复制代码
// 多重结构的结构赋值
const car = {
  model: 'bmw 2018',
  engine: {
    v6: true,
    turbo: true,
    vin: 12345,
  },
};

// 还可以利用函数生成新的对象, 把两层对象转成了一层结构
const modelAndVIN = ({ model, engine: { vin } }) => ({ model, vin });

console.log(modelAndVIN(car)); // => model: bmw 2018  vin: 12345

复制代码
// 利用解构创建不定参数个数的函数
function concatenateAll(...args) {
  return args.join('');
}
复制代码
// 不要声明之后又给对象添加新属性:
const a = {};
a.x = 3;

// good
const a = { x: null };
a.x = 3;

// 如果一定非要加请使用Object.assign:
const a = {};
Object.assign(a, { x: 3 });

复制代码
函数的参数如果是对象的成员,优先使用解构赋值。
// low
function getFullName(user) {
  const firstName = user.firstName;
  const lastName = user.lastName;
}

// good
function getFullName({ firstName, lastName }) {
}
如果函数返回多个值,优先使用对象的解构赋值,而不是数组的解构赋值。这样便于以后添加返回值,以及更改返回值的顺序。
// low
function processInput(input) {
  return [left, right, top, bottom];
}

// good
function processInput(input) {
  return { left, right, top, bottom };
}

const { left, right } = processInput(input);
复制代码
// 依次执行 Promise
function foo(args) {
  return args.reduce((prev, arg) => prev.then(() => bar(arg), Promise.resolve());
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值