如何定义 Javascript 数组,具有多个 ID 但 return 一个值?

How to define Javascript array, with mutiple IDs but return one value?

抱歉,我是 Javascript 的新手。

我有以下 var 数组 ...

    var sections = [
        { key: "SB04", label:"Storage 4 WBA" },
        { key: "SBO4", label:"Storage 4 CT" },
        { key: "CR04", label:"Storage 4 CR" },
    ];

如何根据与列表中的键匹配的键,将此数组重新定义为 return 相同的 label 一次,如此处所示?

所以我尝试使用这个版本,但它在 Chrome 中返回语法错误。

    var sections = [
        { key: ("SB04","SB04A","SB04B"), label:"Storage 4 WBA" },
        { key: ("SBO4","SBO4C","SBO4D","SBO4TEST"), label:"Storage 4 CT" },
        { key: "CR04", label:"Storage 4 CR" },
    ];

因此 GetLabel("SB04C")GetLabel("SB04TEST") 之类的内容将 return 仅“Storage 4 CT”。

显然,必须定义 GetLabel()。但我很高兴能得到关于如何将上面的 var 重新编码为浏览器可以理解的内容的答案。

我试过了,但我不止一次使用它 return 标签...

    var sections = [
        { key: "SB04", label:"Storage 4 WBA" },
        { key: "SB04A", label:"Storage 4 WBA" },
        { key: "SB04B", label:"Storage 4 WBA" },
        { key: "SBO4", label:"Storage 4 CT" },
        { key: "SBO4C", label:"Storage 4 CT" },
        { key: "SBO4D", label:"Storage 4 CT" },
        { key: "SBO4TEST", label:"Storage 4 CT" },
        { key: "CR04", label:"Storage 4 CR" },
    ];

例如输出:

> Storage 4 WBA
> Storage 4 WBA
> Storage 4 WBA

尽管我只给了我的代码一个键 - SB04A

这就是你的意思吗?

const sections = getValues()
  .reduce((acc, val) => ({ ...acc,
    [val.label]: (acc[val.label] || []).concat(val.key)
  }), {});

console.log(sections);

// this can be mapped back to an array of objects:
const mapped = Object.entries(sections)
  .map( ([key, value]) => ({label: key, keys: value}) ) ;
console.log(mapped[0]);

function getValues() {
  return [{
      key: "SB04",
      label: "Storage 4 WBA"
    },
    {
      key: "SB04A",
      label: "Storage 4 WBA"
    },
    {
      key: "SB04B",
      label: "Storage 4 WBA"
    },
    {
      key: "SBO4",
      label: "Storage 4 CT"
    },
    {
      key: "SBO4C",
      label: "Storage 4 CT"
    },
    {
      key: "SBO4D",
      label: "Storage 4 CT"
    },
    {
      key: "SBO4TEST",
      label: "Storage 4 CT"
    },
    {
      key: "CR04",
      label: "Storage 4 CR"
    },
  ];
}

我想你正在寻找 Set

const sections = [
  { key: new Set(["SB04", "SB04A", "SB04B"]), label: "Storage 4 WBA" },
  {
    key: new Set(["SBO4", "SBO4C", "SBO4D", "SBO4TEST"]),
    label: "Storage 4 CT",
  },
  { key: new Set(["CR04"]), label: "Storage 4 CR" },
];

const getLabelByKey = (sections, key) => {
  for (const section of sections) {
    if (section.key.has(key)) {
      return section.label;
    }
  }
  return null;
};

console.log(getLabelByKey(sections, "SBO4C"));