如何通过在Javascript中使用两个普通数组来创建具有相同键的关联数组

如何通过在Javascript中使用两个普通数组来创建具有相同键的关联数组,javascript,arrays,Javascript,Arrays,我读过无数关于stackoverflow的帖子,但我无法解决我的问题 我有两个阵列: arr_name = ["alice", "igor", "prince"] arr_slug = ["link_1", "link_2", "link_3"] 我希望结果是: var data = { "tag_info": [ "name":"alice", "slug":"link_1" ], "tag_

我读过无数关于stackoverflow的帖子,但我无法解决我的问题

我有两个阵列:

arr_name = ["alice", "igor", "prince"]
arr_slug = ["link_1", "link_2", "link_3"]
我希望结果是:

      var data = {
        "tag_info": [
          "name":"alice",
          "slug":"link_1"
        ],
        "tag_info": [
          "name":"igor",
          "slug":"link_2"
        ],
        "tag_info": [
          "name":"prince",
          "slug":"link_3"
        ],
      };
我插入了我的代码片段,因为我不应该这样做 把它放在前面。 这就是我想做的:

      arr_name = ["alice", "igor", "prince"]
      arr_slug = ["link_1", "link_2", "link_3"]
      new_name = []
      new_slug = []

      arr_name.forEach(function(property) {
        new_name.push({"name":property});
      });
      arr_slug.forEach(function(property2) {
        new_slug.push({"slug":property2});
      });
      var data = {'tags_info':{new_name,new_slug}};
我得到的结果如下:

      "tag_info" : {
        "new_name" : [{
          "name":"alice",
          "name":"igor",
          "name":"prince"
        ]},
        "new_slug" : {[
          "slug":"link_1"
          "slug":"link_2"
          "slug":"link_3"
        ]}
      }
我无法建立正确的循环
我该怎么做呢?

嗯,这引入了一些一致性问题,因为您没有任何类型的键来关联值,但是如果您100%确定始终有两个长度相同的数组,并且一个数组的每个位置都与另一个数组的某个位置相关,那么您可以使用以下方法:

let arr_name = ["alice", "igor", "prince"]
let arr_slug = ["link_1", "link_2", "link_3"]

let result = arr_name.reduce((data, name, index) => {
  data.push( {
    'tag_info': {
      name: name,
      slug: arr_slug[index]
    }
  })
  return data;

}, []);

请记住,这不会产生您显示的结构,因为这是不可能的,正如@Nick Parsons所说的,因为它是无效的JSON,这引入了一些一致性问题,因为您没有任何类型的键来关联值,但是,如果您100%确定始终有两个长度相同的数组,并且其中一个数组的每个位置都与另一个数组的某个位置相关,则可以使用以下方法:

let arr_name = ["alice", "igor", "prince"]
let arr_slug = ["link_1", "link_2", "link_3"]

let result = arr_name.reduce((data, name, index) => {
  data.push( {
    'tag_info': {
      name: name,
      slug: arr_slug[index]
    }
  })
  return data;

}, []);

请记住,这不会产生您显示的结构,因为正如@Nick Parsons所述,这是不可能的,因为它是无效的JSON对象不能有多个同名键。它们必须是独一无二的

相反,您可以拥有一个对象数组

假设两个数组的长度相同,并且它们对应的元素始终位于同一索引中,则可以执行以下操作:

让arr_name=[“alice”,“bob”];
让arr_slug=[“link_1”,“link_2”];
让数据=arr_name.map((名称,索引)=>({
名称
段塞:arr_段塞[索引],
}));
数据的值为:

[
{name:“alice”,slug:“link_1”},
{name:“bob”,slug:“link_2”}
]

对象不能有多个同名键。它们必须是独一无二的

相反,您可以拥有一个对象数组

假设两个数组的长度相同,并且它们对应的元素始终位于同一索引中,则可以执行以下操作:

让arr_name=[“alice”,“bob”];
让arr_slug=[“link_1”,“link_2”];
让数据=arr_name.map((名称,索引)=>({
名称
段塞:arr_段塞[索引],
}));
数据的值为:

[
{name:“alice”,slug:“link_1”},
{name:“bob”,slug:“link_2”}
]

无法获得所需的输出。对象需要唯一的键,数组中不能有键值对。在JavaScript中,您必须尝试一些东西……您需要首先定义一个有意义的结果。正如@NickParsons所描述的,您当前的期望本身就是一个语法错误。您想要的输出是不可能的。对象需要唯一的键,数组中不能有键值对。在JavaScript中,您必须尝试一些东西……您需要首先定义一个有意义的结果。正如@NickParsons所描述的,您当前的期望本身就是一个语法错误。为什么不
返回数据。concat({})
concat返回一个新数组,其中包含连接数组的所有元素。在本例中,输出是一个数组,其中包含一个单独的对象,每个对象有两个属性,name和slugI插入了一个我试图执行的示例,显然这是错误的。这就是我想要实现的,谢谢!为什么不
returndata.concat({})
concat返回一个新数组,其中包含连接数组的所有元素。在本例中,输出是一个数组,其中包含一个单独的对象,每个对象有两个属性,name和slugI插入了一个我试图执行的示例,显然这是错误的。这就是我想要实现的,谢谢!谢谢你的回复,但我要找的和@Jorge Solis did一模一样谢谢你的回复,但我要找的和@Jorge Solis一模一样