【问题标题】:How to format values of the arrays of array as required?如何根据需要格式化数组数组的值?
【发布时间】:2025-12-15 00:00:02
【问题描述】:

我有以下包含对象数组的数组。

 const arr = [
  [
    {
      "key1": "keyName",
      "key2": "test name1"
    },
    {
      "key1": "keyDescription",
      "key2": "test description1"
    }
  ],
  [
    {
      "key1": "keyName",
      "key2": "test name2"
    },
    {
      "key1": "keyDescription",
      "key2": "test description2"
    }
  ]
]

我需要的结果如下。

result = [
   {
    "key_name": "test name1",
    "key_description": "test description1"
   },
   {
    "key_name": "test name2",
    "key_description": "test description2"
   }
]

我使用 js 'map' 和 'find' 方法尝试过这个,但它给出了错误的格式。

const res = arr.map(i => i.find(j => j.setting_code === "hotelRate")).map(k => k.setting_value)

我听说这可以使用“减少”来完成。我将不胜感激。谢谢!

【问题讨论】:

  • 请在发布问题之前投入更多时间来校对您的问题。发布版本 A,然后添加另一个要求,在已有答案之后添加相当多的额外任务,这不是“最好”的方式......

标签: javascript arrays sorting object format


【解决方案1】:

以下解决方案仅使用map,然后在该映射内使用forEach 循环将[key1]: key2 对象对添加到每个对象。

const arr=[[{key1:"keyName",key2:"test name1"},{key1:"keyDescription",key2:"test description1"}],[{key1:"keyName",key2:"test name2"},{key1:"keyDescription",key2:"test description2"}]];

const result = arr.map(el => {
  const obj = {};
  el.forEach(({key1, key2}) => {
    const snakeKey = key1.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
    obj[snakeKey] = key2;
  })
  return obj;
})

console.log(result);

编辑:正如 Andreas 在 cmets 中指出的那样,如果需要,可以使用 reduce 方法编写:

const result = arr.map(el => {
  return el.reduce((result, current) => {
    const snakeKey = current.key1.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
    result[snakeKey] = current.key2;
    return result;
  }, {});
})

【讨论】:

  • 谢谢,@尼克。结果数组中对象的键应该是蛇的情况。你能修改你的答案吗?
  • 好的,我已经转换了
  • 哦,您更改了问题中的字符串。一会儿……
  • @ruk91 这个答案也很容易转换,因此它使用.reduce()(因为你在问题中提到了它(“我听说这可以使用'reduce'来完成” ))
  • @Andreas,你能用 reduce() 提供答案吗...
【解决方案2】:
arr.map(function(item) {
  var props = {};
  
  item.forEach(function(keyValue) {
    props[keyValue["key1"]] = keyValue["key2"]; 
  });
  
  return props;
});

【讨论】: