【问题标题】:how do i rename key using javascript我如何使用javascript重命名密钥
【发布时间】:2018-04-04 01:43:18
【问题描述】:
let jsonObj = {
  "compCode": "0001",
  "vndrId": "0000000047",
  "vndrName": "NKJFKFJFJKJJ",
  "vndrName1": "jdkfjfkfjk",
  "shortName": "fjkfjkfjkf",
  "vndrStatus": "A",
  "vndrType": "R",
  "docStatus": "O",
  "createdOn": "1970-01-01T00:00:00.000+0000",
  "modifiedOn": "2017-10-11T10:33:35.000+0000",
  "lastUser": "ashok",
  "vndrAddr": [{
    "addrId": "1",
    "addr1": "jhghjbg",
    "addr2": "jgbfhhj",
    "addr3": "hjvfddfh",
    "city": "DJHHVH",
    "state": "JH",
    "pinCode": "855485",
    "effDate": "1970-01-01T00:00:00.000+0000",
    "effStatus": "A",
    "vndrContact": [{
        "contId": "1",
        "contName": "gnghh",
        "contDesg": "ghhgh",
        "contPh": "5625458",
        "contEmail": "gfhj@bjhg.com"
      }, {
        "contId": "1",
        "contName": "gnh",
        "contDesg": "ghgh",
        "contPh": "562558",
        "contEmail": "ghj@bjhg.com"
      }

    ]
  }, {
    "addrId": "2",
    "addr1": "jhghjbg",
    "addr2": "jgbfhhj",
    "addr3": "hjvfddfh",
    "city": "DJHHVH",
    "state": "JH",
    "pinCode": "855485",
    "effDate": "1970-01-01T00:00:00.000+0000",
    "effStatus": "A",
    "vndrContact": [{
      "contId": "3",
      "contName": "nghh",
      "contDesg": "hhgh",
      "contPh": "562558",
      "contEmail": "gfj@bhg.com"
    }, {
      "contId": "4",
      "contName": "gngh",
      "contDesg": "ghhh",
      "contPh": "56458",
      "contEmail": "gfh@bjh.com"
    }]
  }],
  "vndrRegn": [{
    "regnId": 1,
    "regnType": "V",
    "regnNo": "ABCDEFGHJ",
    "regnDate": "2016-10-01T00:00:00.000+0000",
    "regnAuth": "jfkjfjfjf",
    "regnExpiry": "2022-10-01T00:00:00.000+0000",
    "effDate": "2016-10-01T00:00:00.000+0000",
    "effStatus": "A"
  }, {
    "regnId": 2,
    "regnType": "S",
    "regnNo": "ABCDEFGHJ",
    "regnDate": "2016-10-01T00:00:00.000+0000",
    "regnAuth": "jfkjfjfjf",
    "regnExpiry": "2022-10-01T00:00:00.000+0000",
    "effDate": "2016-10-01T00:00:00.000+0000",
    "effStatus": "A"
  }]
}

我的对象看起来像这样。如何重命名数组或对象中的每个键并使用 javascript 创建键值数组?

我的结果应该是这样的

compCode:0001
vndrId:00088
vndrName:JXCHXDDJKCJ
vndrName1:JFVHSSSJFDH
shortName:jvgshqxz
vndrStatus:A
vndrType:R
docStatus:O
createdOn:18-10-2017 11:32:28
modifiedOn:23-10-2017 18:51:58
lastUser:ashok
vndrAddr[0].addrId:1
vndrAddr[0].addr1:vfdfvf
vndrAddr[0].addr2:nbnsdvd
vndrAddr[0].addr3:bdfb
vndrAddr[0].city:vbvfb
vndrAddr[0].state:JH
vndrAddr[0].pinCode:3332
vndrAddr[0].effDate:02-10-2012
vndrAddr[0].effStatus:A
vndrAddr[0].vndrContact[0].contId:1
vndrAddr[0].vndrContact[0].contName:jvffvjh
vndrAddr[0].vndrContact[0].contDesg:hvhjjvf
vndrAddr[0].vndrContact[0].contPh:vjhhjv
vndrAddr[0].vndrContact[0].contEmail:fhhf@fj.com
vndrAddr[1].addrId:2
vndrAddr[1].addr1:hjdfhjfhj
vndrAddr[1].addr2:vffvhjh
vndrAddr[1].addr3:hfvfhj
vndrAddr[1].city:hjvhjdf
vndrAddr[1].state:JH
vndrAddr[1].pinCode:255
vndrAddr[1].effDate:02-12-2012
vndrAddr[1].effStatus:A
vndrAddr[1].vndrContact[0].contId:1
vndrAddr[1].vndrContact[0].contName:dfvhjf
vndrAddr[1].vndrContact[0].contDesg:fvjhfvhj
vndrAddr[1].vndrContact[0].contPh:fvhjjhfv
vndrAddr[1].vndrContact[0].contEmail:hdhd@hf.com

【问题讨论】:

  • 请更加具体,并使用较小的数据集来显示您的问题。请参阅 How to Askminimal reproducible example。很难弄清楚你的问题是什么
  • 您是在问如何展平对象吗?所以你的访问权限看起来像jsonObj["vndrAddr[1].vndrContact[0].contEmail"]
  • 重命名什么键?我没有时间比较发生了什么变化。
  • 你应该包含你到目前为止尝试过的代码。
  • 如果你真的不知道他想做什么@shawon191,你怎么知道我的答案不会产生预期的输出?

标签: javascript json node.js


【解决方案1】:

您可以通过使用括号保存数组索引的类型来采用迭代和递归方法。稍后将值分配给路径的新属性。

function setPath(object) {

    function iter(object, path, isArray) {
        Object.keys(object).forEach(function (key) {
            var temp = path + (isArray ? '[' + key + ']' : (path && '.') + key);
            if (object[key] && typeof object[key] === 'object') {
                return iter(object[key], temp, Array.isArray(object[key]));
            }
            result[temp] = object[key];
        });
    }

    var result = {};
    iter(object, '');
    return result;
}

var object = { a: { b: [{ c: { d: 'foo' } }, 'bar'] } };

console.log(setPath(object));

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 2012-11-03
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    • 2023-04-02
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多