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

2019-07-16  本文已影响0人  无名程序猿
//使用 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
const checkCarModel = (model) => {
    if(model === 'renault' || model === 'peugeot') { 
    console.log('model valid');
    }
}
checkCarModel('renault'); // 输出 'model valid'
// 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() // 同上
// 常规
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

上一篇 下一篇

猜你喜欢

热点阅读