首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将2d数组转换为密钥和密钥名未知数量的对象

将2d数组转换为密钥和密钥名未知数量的对象
EN

Stack Overflow用户
提问于 2022-11-12 10:28:45
回答 1查看 33关注 0票数 0

我学习了如何将2d数组转换为对象,如下所示。然而,在这种情况下,我们准确地知道密钥和密钥名的数量(3键:名称、价格、地点):

代码语言:javascript
复制
const myArray = [
  ['Rice', '$6', 'super market'],
  ['water', '$7', 'traditional market']
];

const myObj = myArray
  .map(([name, price, place]) => ({ name, price, place }));

console.log(myObj);

如何在密钥和密钥名未知的情况下具有相同的功能?例如,myArray可以是

代码语言:javascript
复制
const myArray = [
  ['Rice', '$6'],
  ['water', '$7']
];

代码语言:javascript
复制
const myArray = [
  ['Rice', '$6',"promotion"],
  ['water', '$7',"normal"]
];

或者别的什么,我也有一个相应的键名数组,如“名称”、“价格”、“促销”,用于每种类型的数组。

谢谢,

我试图将名称、价格、下面的位置替换为已定义的密钥名变量,但它没有工作。

代码语言:javascript
复制
const myObj = myArray
  .map(([name, price, place]) => ({ name, price, place }));
EN

回答 1

Stack Overflow用户

发布于 2022-11-12 16:52:13

Object.fromEntries()需要一个包含键值对的数组,这不是您目前所拥有的。如果将2D数组中的每一行Array.map()为键值对,则可以使用它。或者,使用Array.forEach()。下面是这两种方法的演示:

代码语言:javascript
复制
function test() {
  const keys = ['name', 'price', 'promotion',];
  const array2d = [
    ['Rice', '$6', 'super market'],
    ['water', '$7', 'traditional market'],
  ];
  console.log(arraysToObjects1_(keys, array2d));
  console.log(arraysToObjects2_(keys, array2d));
}

function arraysToObjects1_(keys, array2d) {
  return array2d.map(row => Object.fromEntries(row.map((value, index) => [keys[index], value])));
}

function arraysToObjects2_(keys, array2d) {
  const result = [];
  array2d.forEach(row => {
    const obj = {};
    keys.forEach((key, index) => obj[key] = row[index]);
    result.push(obj);
  });
  return result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74412103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档