【问题标题】:Push arrays in one object with javascript [closed]使用javascript将数组推送到一个对象中[关闭]
【发布时间】:2019-08-01 10:02:47
【问题描述】:

我有这个数组:

var arr = [scanner, monitor];

然后我有这些代码行,

var arr = ["scanner", "monitor"];
var newArr = [];

for ( var i = 0, l = arr.length; i < l; i++ ) {
  newArr.push({"techName":[{"id":i,"name": "name"+i }]});
}
console.log(newArr);

生成这个对象:

[
  {
    "techName0": [
      {
        "id": 0,
        "name": "name0"
      }
    ]
  },
  {
    "techName1": [
      {
        "id": 1,
        "name": "name1"
      }
    ]
  }
]

我想用这样的数组创建一个对象:

{
    "techName0": [{
        "id": "0",
        "name": "name0"
    }],
    "techName1": [{
        "id": "1",
        "name": "name1"
    }]
}

【问题讨论】:

  • 你不能在一个对象中多次使用同一个键。
  • 您已经将techName 作为对象数组,那么为什么还要两个techName? (正如乌斯曼上面所说的那样,你不能这样做。)
  • 您所要求的毫无意义。如果您可以拥有两个名称相同但值不同的键,newArr.techName 会给您什么?
  • @Barrosy 我认为这里不需要一个例子。已经有一个例子了。还有一个可重现的代码。但是期望是没有意义的。一个例子很好,如果它清楚问题是什么但不知道它发生在哪里,例如,foo(1) 产生4 而不是2 但没有foo 的代码。
  • @Barrosy 不需要 snark - 我知道它代表什么。我是说这里没有意义 - 如果 OP did 有产生他们想要的东西的代码,(可重现的例子),那么他们 不会有问题 .如果他们有一些有问题的代码,那么这将起作用。他们确实有最少的、完整的、可验证的代码。却不为所欲为。他们如何提供涵盖所有这些参数的不同代码,并在不解决问题的情况下以某种方式澄清问题?

标签: javascript arrays json


【解决方案1】:

你可以使用Array.reduce():

var arr = ["scanner", "monitor"];

const output = arr.reduce((acc, name, id) => (acc[`techName${id}`] = [{ id, name }], acc), {});

console.log(output);

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多