//使用 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/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() // 同上
// 常规
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
网友评论