【问题标题】:how to make nested array objects in javascript in a key value pair format如何在javascript中以键值对格式制作嵌套数组对象
【发布时间】:2021-02-10 19:38:12
【问题描述】:
array data=[
{
"id":1,
"name":"john",
"income":22000,
"expenses":15000
},
{
"id":2,
"name":"kiran",
"income":27000,
"expenses":13000
},
{
"id":1,
"name":"john",
"income":35000,
"expenses":24000
}
]

我想在键值对中按以下格式设置一个新数组。即结果集。 你能解释一下最好的方法吗? ?使用foreach如何实现?

通过循环每个元素尝试使用 foreach 方法。但无法获得所需的输出格式

var result= [ {
      "name": "john",
      "series": [
        {
          "name": "income",
          "value": 22000
        },
        {
          "name": "expenses",
          "value": 15000
        },
       
      ]
    },
{
      "name": "kiran",
      "series": [
        {
          "name": "income",
          "value": 27000
        },
        {
          "name": "expenses",
          "value": 13000
        },
       
      ]
    }]

【问题讨论】:

  • 请同时添加您的代码。
  • Object.entries 可能是个不错的起点
  • 有 2 个johns 另一个呢?

标签: javascript arrays multidimensional-array


【解决方案1】:
// Your array
const result = [
  {
    name: "john",
    series: [
      {
        name: "income",
        value: 22000,
      },
      {
        name: "expenses",
        value: 15000,
      },
    ],
  },
  {
    name: "kiran",
    series: [
      {
        name: "income",
        value: 27000,
      },
      {
        name: "expenses",
        value: 13000,
      },
    ],
  },
];

// What is .map function?
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

// Output

// map return a new function.
// it's a loop method but more equipped
result.map((item, index) => {
  const seriesKeyValues = {};
  // forEach is too, it's a loop method.
  // but not have a return value,
  // just loops and give you item on each loop
  item.series.forEach(serie => {
    //seriesKeyValues is a object.
    // different between seriesKeyValues.serie.name
    // it's a bracket notation
    // look this documentation
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#computed_property_names
    seriesKeyValues[serie.name] = serie.value;
  });

  // return new Object
  // ... is 'spread syntax' basically combine objects
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#spread_properties
  // spread syntax is a new way.
  // old way is https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

  return {
    id: index,
    name: item.name,
    ...seriesKeyValues,
  };
});

我希望它会有所帮助:)。如果你不明白任何代码行,我可以解释

【讨论】:

  • @saidfurkandize.Thankyou。而且是初学者。所以你能解释一下吗。这对我有很大帮助。
猜你喜欢
  • 2021-10-28
  • 1970-01-01
  • 2022-01-12
  • 2021-08-17
  • 1970-01-01
  • 2019-04-10
  • 2016-12-23
  • 2021-10-04
  • 1970-01-01
相关资源
最近更新 更多