【问题标题】:copy from one object, change keys but keep the same values从一个对象复制,更改键但保持相同的值
【发布时间】:2019-09-30 15:45:38
【问题描述】:

您好,我想复制一个存在于外部 json 文件中的 JavaScript 对象。它看起来像这样:

并通过代码我想更改每个数组上的键而不更改它的值。最后一个键的值需要是一个数组,而不仅仅是 vales

{ "items": [
  { "namezz": "Bike", "price": 100 },
  { "namezz": "TV", "price": 700 },
  { "namezz": "Album", "price": 10 },
  { "namezz": "Book", "price": 5 },
  { "namezz": "Phone", "price": 500 },
  { "namezz": "Computer", "price": 1000 },
  { "namezz": "Keyboard", "price": 25 }
]
}

它需要看起来像这样:

[
  { "name": "Bike", "data": [100] },
  { "name": "TV", "data": [700] },
  { "name": "Album", "data": [10] },
  { "name": "Book", "data": [5] },
  { "name": "Phone", "data": [500] },
  { "name": "Computer", "data": [1000] },
  { "name": "Keyboard", "data": [25] }
]

我尝试过的代码:

 const itemNames =  simple.map((xxx) => {

        return ("name" + xxx.namezz + "data: [" + xxx.price + "]")
    })

【问题讨论】:

  • 你试过什么?
  • 我尝试过使用.map函数。
  • 是的。地图会很好用。
  • 你能展示一下你试过的.map吗?

标签: javascript arrays json javascript-objects


【解决方案1】:

使用map() 方法,您走在了正确的轨道上。您使用map() 的方式将产生一个字符串数组。这是一个使用map() 获取您请求的输出(新对象数组)的示例。

const myObject = {
  "items": [{
      "namezz": "Bike",
      "price": 100
    },
    {
      "namezz": "TV",
      "price": 700
    },
    {
      "namezz": "Album",
      "price": 10
    },
    {
      "namezz": "Book",
      "price": 5
    },
    {
      "namezz": "Phone",
      "price": 500
    },
    {
      "namezz": "Computer",
      "price": 1000
    },
    {
      "namezz": "Keyboard",
      "price": 25
    }
  ]
};

const result = myObject.items.map(x => ({ name: x.namezz, data: [x.price] }));

console.log(result);

【讨论】:

  • 哦,谢谢!必须返回整个数组。我的错误是向它添加字符串。
【解决方案2】:

您的代码的问题是返回字符串,而您需要一个对象,即

return { name:xxx.namezz , data: [xxx.price] }

您也可以使用mapdestructuring

let obj = { "items": [{ "namezz": "Bike", "price": 100 },{ "namezz": "TV", "price": 700 },{ "namezz": "Album", "price": 10 },{ "namezz": "Book", "price": 5 },{ "namezz": "Phone", "price": 500 },{ "namezz": "Computer", "price": 1000 },{ "namezz": "Keyboard", "price": 25 }]}

let final = obj.items.map(({ price, namezz }) => ({ namezz, data: [price] }))

console.log(final)

【讨论】:

  • 谢谢您,先生。我不确定如何实现代码。
  • @adnantariq 现在清楚你的错误在哪里了吗?如果您仍然发现任何困难,请告诉我,很乐意提供帮助:)
  • 不,先生,我很好,感谢您分享示例。很有帮助^^
猜你喜欢
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 2023-01-26
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多