【问题标题】:Want to convert array to duplicate key object in Node js想要将数组转换为Node js中的重复键对象
【发布时间】:2018-01-24 02:21:45
【问题描述】:

我想将数组转换为 Nodejs 中的重复键对象。以下是我的数组数据,

{
    "name" : "ashesh",
    "address_data" : [
        {
            "city" : "Mumbai",
            "pincode": "400097"
        },
        {
            "city" : "Delhi",
            "pincode": "1000001"
        }
    ]
}

想把数组转换成下面的对象

{
    "name" : "ashesh",
    "address_data" : {
        "address" : {
            "city" : "Mumbai",
            "pincode": "400097"
        },
        "address" : {
            "city" : "Delhi",
            "pincode": "1000001"
        }
    }
}

如何在 node js 或 javascript 中实现这种结构。请帮助我。我知道这不是有效的 JSON,但想转换上述结构。我坚持要实现这种结构。

【问题讨论】:

  • 您的第二个代码块不是有效的 Javascript。 Javascript 中没有重复键之类的东西。通常,人们会使用一个数组来表示同一属性的多个值。
  • 你为什么需要那个?
  • 对象每个键只能有 1 个值。如果将同一个键设置为多个值,它通常只会保留最后一个(否则会引发错误)。
  • @ashesh 如果对象中有重复的键,您打算如何访问/迭代数据。仔细想想,你就会明白为什么 Object 没有重复键
  • 没有人会想要这样的数据结构。正如我所说的,对象上的数据迭代/访问是通过键,如果有重复的键,你将如何确定要返回哪些数据。兄弟考虑一下。你想要的是一个数组,其键地址为 address_data : [ address1, address2, address3]

标签: javascript arrays json node.js object


【解决方案1】:

如果一些第三方仍然想要重复的键,而是创建一个 JSON 对象格式的字符串并发送它们。 请记住,此字符串不符合 JSON,您将无法解析它。

var a = { 
"name" : "ashesh", 
"address_data" : [ 
{ 
"city" : "Mumbai", 
"pincode": "400097" 
}, 
{ 
"city" : "Delhi", 
"pincode": "1000001" 
} 
] 
} 

var b = `{"name": "${a.name}", "address_data": {`; 

a.address_data.forEach((x) => b = b + `"address": ${JSON.stringify(x)}`); 
b = b + "}}"; 
b = b.replace(/\}"address"/g, `},"address"`);
res.send(b);

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多