如何按数组对象的state字段分组,将对应key、value归入该state的dropdown数组
JavaScript实现方案
核心思路是通过reduce方法先构建state到下拉选项的映射关系,再把映射转为目标结构的数组:
// 原始数据 const originalData = [ { state: "NY", key: "A", value: "Alarm" }, { state: "CT", key: "A", value: "Alarm" }, { state: "NH", key: "A", value: "Alarm" }, { state: "CT", key: "B", value: "Audible and Etched" }, { state: "NH", key: "B", value: "Audible and Etched" }, { state: "NY", key: "AA", value: "Active Disabling and Anti-Theft" }, { state: "FL", key: "B", value: "Audible and Etched" }, { state: "FL", key: "A", value: "Alarm" }, { state: "FL", key: "AA", value: "Active Disabling and Anti-Theft" } ]; // 分组逻辑 const stateMap = originalData.reduce((acc, curr) => { // 如果当前state还没在映射里,初始化条目 if (!acc[curr.state]) { acc[curr.state] = { state: curr.state, dropdown: [] }; } // 把key和value推入对应state的dropdown数组 acc[curr.state].dropdown.push({ key: curr.key, value: curr.value }); return acc; }, {}); // 把映射对象的值转为数组就是最终结果 const result = Object.values(stateMap); console.log(result);
如果需要对dropdown里的选项按键的字母顺序排序,可以补充以下逻辑:
result.forEach(item => { item.dropdown.sort((a, b) => a.key.localeCompare(b.key)); });
运行后输出的结构和你要求的完全一致。
内容的提问来源于stack exchange,提问作者Shaik Nizamuddin
相关产品推荐
相关产品推荐

