美文网首页
编写 JavaScript 条件式和匹配条件的技巧

编写 JavaScript 条件式和匹配条件的技巧

作者: 无名程序猿 | 来源:发表于2019-07-16 13:13 被阅读0次
  • Array.some(匹配部分条件)
//使用 Array.some
const cars = [
  { model: 'renault', year: 1956 },
  { model: 'peugeot', year: 1968 },
  { model: 'ford', year: 1977 }
];
const checkForAnyModel(modal){
  return cars.some(car=>car.model==modal)
}
checkForAnyModel('model') // false
checkForAnyModel('ford') // true
  • Array.includes(匹配多个条件)
const checkCarModel = (model) => {
    if(model === 'renault' || model === 'peugeot') { 
    console.log('model valid');
    }
}
checkCarModel('renault'); // 输出 'model valid'
  • 匹配所有条件 Array.every/Array.find
// Array.every
const checkEveryModel = (model) => {
  return cars.every(car => car.model === model);
}
checkEveryModel(modal) // true/false
// Array.find
const checkEveryModel = (model) => {
  return cars.find(car => car.model !== model) === undefined;
}
checkEveryModel() // 同上
  • 使用索引或者映射,而不是 switch 语句
// 常规
const getCarsByState = (state) => {
  switch (state) {
    case 'usa':
      return ['Ford', 'Dodge'];
    case 'france':
      return ['Renault', 'Peugeot'];
    case 'italy':
      return ['Fiat'];
    default:
      return [];
  }
}
// 优化
const cars = new Map()
  .set('usa', ['Ford', 'Dodge'])
  .set('france', ['Renault', 'Peugeot'])
  .set('italy', ['Fiat']);
const getCarsByState = (state) => {
  return cars.get(state) || [];
}
console.log(getCarsByState()); // 输出 []
// 或者对象字面量的形式
const carState = {
  usa: ['Ford', 'Dodge'],
  france: ['Renault', 'Peugeot'],
  italy: ['Fiat']
};
const getCarsByState = (state) => {
  return carState[state] || [];
}
  • 使用自判断链接和空合并
// 传统
const car = {
  model: 'Fiesta',
  manufacturer: {
    name: 'Ford',
    address: {
      street: 'Some Street Name',
      number: '5555',
      state: 'USA'
    }
  }
}
const model = car && car.model || 'default model';
const street = car && car.manufacturer && car.manufacturer.address && car.manufacturer.address.street || 'default street';
// 优化
const model = car?.model ?? 'default model';
const street = car?.manufacturer?.address?.street ?? 'default street';
const checkCarManufacturerState = () => {
   if(car?.manufacturer?.address?.state === 'USA') {
     console.log('Is from USA');
   }
}

参考链接
https://mp.weixin.qq.com/s/XWao-5ypp5EZOcb5Do4xBA

相关文章

网友评论

      本文标题:编写 JavaScript 条件式和匹配条件的技巧

      本文链接:https://www.haomeiwen.com/subject/graakctx.html