如何从Car实例数组中按年份筛选并提取指定属性值?
按年份筛选车辆并提取指定属性数组
先给出基础的类定义与实例创建示例:
class Car { constructor(name, model, year) { this.name = name; this.model = model; this.year = year; } } class AllCar { constructor() { this.carList = []; } addCar(car) { this.carList.push(car); } } // 创建车辆实例并添加到AllCar const car1 = new Car('丰田', '卡罗拉', 2014); const car2 = new Car('本田', '思域', 2014); const car3 = new Car('大众', '朗逸', 2015); const allCars = new AllCar(); allCars.addCar(car1); allCars.addCar(car2); allCars.addCar(car3);
核心操作:筛选+提取属性
- 提取2014年车辆的model数组
const filteredModels = allCars.carList .filter(car => car.year === 2014) .map(car => car.model); console.log(filteredModels); // 输出: ['卡罗拉', '思域']
- 提取2014年车辆的name数组
const filteredNames = allCars.carList .filter(car => car.year === 2014) .map(car => car.name); console.log(filteredNames); // 输出: ['丰田', '本田']
- 提取2014年车辆的name+model组合对象数组
const filteredCarData = allCars.carList .filter(car => car.year === 2014) .map(car => ({ name: car.name, model: car.model })); console.log(filteredCarData); // 输出: [{ name: '丰田', model: '卡罗拉' }, { name: '本田', model: '思域' }]
封装到AllCar类复用
如果需要频繁使用这类操作,可以把逻辑封装进AllCar类:
class AllCar { constructor() { this.carList = []; } addCar(car) { this.carList.push(car); } // 按年份筛选并提取单个属性 getCarsByYear(year, prop) { return this.carList .filter(car => car.year === year) .map(car => car[prop]); } // 按年份筛选并提取name+model getCarNamesAndModelsByYear(year) { return this.carList .filter(car => car.year === year) .map(car => ({ name: car.name, model: car.model })); } } // 调用封装方法 console.log(allCars.getCarsByYear(2014, 'model')); // ['卡罗拉', '思域'] console.log(allCars.getCarNamesAndModelsByYear(2014)); // 输出组合对象数组
内容的提问来源于stack exchange,提问作者zkinkongz
相关产品推荐
相关产品推荐

