C#开发者求问:JavaScript中是否有更简洁的对象数组声明方式?
简化JavaScript数组对象的写法
当然不用每次都重复成员名称,给你几种简洁的实现方式,适配不同场景:
1. 工厂函数(推荐用于纯数据对象)
利用ES6的属性简写(当对象键名与变量名一致时可省略key: value的完整写法),封装一个创建车辆对象的函数,每次调用只需传入参数:
function createCar(color, type, registration, capacity) { return { color, type, registration, capacity }; } let cars = [ createCar("purple", "minivan", new Date('2017-01-03'), 7), createCar("red", "station wagon", new Date('2018-03-03'), 5), // ...更多车辆 ];
2. ES6类(贴近C#类的写法)
如果你的车辆对象需要附带方法,这种方式和C#的类定义逻辑最接近:
class Car { constructor(color, type, registration, capacity) { this.color = color; this.type = type; this.registration = registration; this.capacity = capacity; } // 可添加方法,比如获取注册年份 getRegistrationYear() { return this.registration.getFullYear(); } } let cars = [ new Car("purple", "minivan", new Date('2017-01-03'), 7), new Car("red", "station wagon", new Date('2018-03-03'), 5), // ...更多车辆 ];
3. 数组映射(适合已有结构化数据)
如果你的车辆数据一开始就是二维数组格式,可以通过map方法解构并转换为对象:
// 先整理纯数据的二维数组 let carRawData = [ ["purple", "minivan", new Date('2017-01-03'), 7], ["red", "station wagon", new Date('2018-03-03'), 5], // ...更多车辆数据 ]; // 映射为目标对象数组 let cars = carRawData.map(([color, type, registration, capacity]) => ({ color, type, registration, capacity }));
这些方法都能帮你避免重复书写对象的成员名称,根据你的实际需求选择即可。
内容的提问来源于stack exchange,提问作者Jonathan Wood
相关产品推荐
相关产品推荐

