You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按数组对象的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:06:04