Javascript—如何将数组中对象的第一个元素指定为另一个数组的键

Javascript—如何将数组中对象的第一个元素指定为另一个数组的键,javascript,arrays,object,Javascript,Arrays,Object,基本上我有一个数组: 我用SQL查询填充的。这使阵列类似于: 我想创建另一个数组,其中数组对象的键是组织内对象的第一个元素,因此它们将是id1、id2等 我认为输出应该是这样的: newArray = [id1: {name1, type2}, id2: {name2, type2}] 试试那个 const a = [ { id: 1, name: "peter", city: "New City" }, { id: 2, name: "alex"

基本上我有一个数组:

我用SQL查询填充的。这使阵列类似于:


我想创建另一个数组,其中数组对象的键是组织内对象的第一个元素,因此它们将是id1、id2等

我认为输出应该是这样的:

newArray = [id1: {name1, type2}, id2: {name2, type2}]
试试那个

     const a = [
        { id: 1, name: "peter", city: "New City" },
        { id: 2, name: "alex", city: "New City" },
        { id: 3, name: "michael", city: "New City" }
      ];

      const b = a.map(item => {
        const { id, ...others } = item;

        return { id: { ...others } };
      });

      console.log(b);
试试那个

     const a = [
        { id: 1, name: "peter", city: "New City" },
        { id: 2, name: "alex", city: "New City" },
        { id: 3, name: "michael", city: "New City" }
      ];

      const b = a.map(item => {
        const { id, ...others } = item;

        return { id: { ...others } };
      });

      console.log(b);

这是佩蒂亚解决方案的改进版本@佩蒂娅:我希望你不介意我复制你的样本数据

const a=[
{id:11,姓名:“彼得”,城市:“新城”},
{id:12,名字:“亚历克斯”,城市:“另一个城市”},
{id:31,姓名:“迈克尔”,城市:“第三城市”}
],b={};
a、 forEach(obj=>{b[obj.id]=obj});

控制台日志(b)这是Petia解决方案的修改版本@佩蒂娅:我希望你不介意我复制你的样本数据

const a=[
{id:11,姓名:“彼得”,城市:“新城”},
{id:12,名字:“亚历克斯”,城市:“另一个城市”},
{id:31,姓名:“迈克尔”,城市:“第三城市”}
],b={};
a、 forEach(obj=>{b[obj.id]=obj});

控制台日志(b)不清楚您在问什么,但假设您的对象包含变量而不是字符串,这可能会有所帮助

id1=1;
姓名1='bob'
type1='ajax'
id2=2;
name2='sid'
类型2='comet'
org=[{id1,name1,type1},{id2,name2,type2}]
neworg={}

对于(i=0;i来说,不太清楚您在问什么,但是假设您的对象包含变量而不是字符串,这可能会有所帮助

id1=1;
姓名1='bob'
type1='ajax'
id2=2;
name2='sid'
类型2='comet'
org=[{id1,name1,type1},{id2,name2,type2}]
neworg={}
对于(i=0;i可以使用函数和
运算符:

const result = a.map(s => ({[s.id]:{...s}}));
举个例子:

const a=[
{id:10,名称:“科学”,类型:“类型1”},
{id:20,名称:“管理”,类型:“类型2”},
{id:30,名称:“运动”,类型:“类型3”}
];
const result=a.map(s=>({[s.id]:{…s}));
console.log(结果);
可以使用函数和
运算符:

const result = a.map(s => ({[s.id]:{...s}}));
举个例子:

const a=[
{id:10,名称:“科学”,类型:“类型1”},
{id:20,名称:“管理”,类型:“类型2”},
{id:30,名称:“运动”,类型:“类型3”}
];
const result=a.map(s=>({[s.id]:{…s}));

console.log(result);
您可以添加一个您想要的输出示例吗?
organization\u id=organizations.map(x=>x.id)
?您的id是否总是从0开始并按顺序递增?如果不是,也许您应该对数组进行排序:
organizations.sort((a,b)=>a.id-b.id)
,因此您不必依赖于“键”,它在数组中应该是连续的,否则它就是一个对象。ID从1开始并自动递增,但是数据库中的行可以被删除,因此一些ID最终会被删除,因此留下间隙数组没有键。它们有索引。您的意思是
设置
或其他什么。以及您的数组符号无效。它可以是这样的:
[{id1:{name1,type2}},{id2:{name2,type2}]
,但我不确定它是否是您想要的。您可以添加一个您想要的输出示例吗?
Organization_id=Organizations.map(x=>x.id)
?您的id是否总是从0开始并按顺序递增?如果不是,也许您应该对数组进行排序:
organizations.sort((a,b)=>a.id-b.id)
,因此您不必依赖于“键”,它在数组中应该是连续的,否则它就是一个对象。ID从1开始并自动递增,但是数据库中的行可以被删除,因此一些ID最终会被删除,因此留下间隙数组没有键。它们有索引。您的意思是
设置
或其他什么。以及您的数组符号无效。它可以是这样的:
[{id1:{name1,type2}},{id2:{name2,type2}]
,但我不确定它是否是您想要的。结果将是一个索引值为
0,1,2
的数组:如图所示:
[{id:{name:{peter”,“city:{New city},{id:{name:{name:{city:},{id:{newcity:{city:{name:{alex:}“New City”}]
id
1,2,3
在结果数组中找不到。@cars10m数组没有键。它们有索引。如果我们有[id1,id2,id3],我们会丢失数据的另一部分。如果我们想在该结构[id:{…}]中获得键,我们可以使用Object.keys()方法。结果将是一个索引值为
0,1,2
:如下所示:
[{“id”:{“name”:“peter”,“city”:“New city”},{“id”:{“name”:“alex”,“city”:“New city”},{“id”:{“name”:“michael”,“city”:“New city”}]
id
1,2,3
在结果数组中找不到。@cars10m数组没有键。它们有索引。如果我们有[id1,id2,id3],我们会丢失数据的另一部分。如果我们想在该结构[id:{…}中获得键,我们可以使用Object.keys()方法。