【问题标题】:what is the best way to set a property aof a javascript json object by its key通过其键设置javascript json对象属性的最佳方法是什么
【发布时间】:2023-03-13 04:30:01
【问题描述】:

这是我在 fokontanys.json 文件中的数据:

{
  "vzdveg643": {
    "lldistrict":"Ambilobe",
    "id_province": 7,
    "id": null
  },
  "vzvsdv5327": {
    "lldistrict":"Ambilobe",
    "id_province": 7,
    "id": null
  }
}

我需要用每个对象的键替换“id”的“null”值。 我导入了json文件

let fokontanys = require("./fokontanys.json");

并做了一个 foreach 里面我做了我的修改:

Object.keys(fokontanys).forEach(function (fokontany) {    
  fokontanys[fokontany].ll_district=fokontanys[fokontany].lldistrict;
  fokontanys[fokontany].id="????????????????";
  delete fokontanys[fokontany].lldistrict;
  newFokontanys[fokontany] = fokontanys[fokontany];
});
console.log(newFokontanys);

有没有什么方法可以获取每个对象的Key并放入id中? 我花了一整天的时间来寻找如何做到这一点,但没有任何成功。感谢您的帮助。

【问题讨论】:

  • 您的术语是错误的,它使您的问题不清楚。没有“JSON 对象”之类的东西。 JSON 是一种字符串格式。如果您有一个对象,只需像往常一样访问它。然后你说你想要每个对象的“the” Key。 “键”是用于描述对象中的“键/值”对的术语,并且您的对象具有多个键/值对。所以没有“the”键。你到底想做什么?您能展示一下您期望的输出类型吗?
  • fokontanys[fokontany].id = fokontany
  • 感谢您的回答。我想要实现的是用其键的值更改每个对象的 id。我对术语感到抱歉,我还在学习。这是我想要的对象 { "vzdveg643": { "lldistrict":"Ambirobe", "id_province": 7, "id":"vzdveg643" }, "vzvsdv5327": { "lldistrict":"Ambilobe", “id_province”:7,“id”:“vzvsdv5327”}}
  • 用它的键值改变每个对象的 id

标签: javascript arrays json object


【解决方案1】:

根据您的示例,您可以将 "????????????????" 替换为 fokontany,这已经是每个对象的键。

const fokontanys = {
  "vzdveg643": {
    "lldistrict":"Ambilobe",
    "id_province": 7,
    "id": null
  },
  "vzvsdv5327": {
    "lldistrict":"Ambilobe",
    "id_province": 7,
    "id": null
  }
}

const newFokontanys = {}

Object.keys(fokontanys).forEach(function (fokontany) { 
  fokontanys[fokontany].ll_district=fokontanys[fokontany].lldistrict;
  fokontanys[fokontany].id=fokontany;
  delete fokontanys[fokontany].lldistrict;
  newFokontanys[fokontany] = fokontanys[fokontany];
});

console.log(newFokontanys);

【讨论】:

    【解决方案2】:

    使用Object.fromEntreisObject.entriesmap在一行中做

    const process = (data) =>
      Object.fromEntries(
        Object.entries(data).map(([key, obj]) => [key, { ...obj, id: key }])
      );
    
    const data = {
      vzdveg643: {
        lldistrict: "Ambilobe",
        id_province: 7,
        id: null,
      },
      vzvsdv5327: {
        lldistrict: "Ambilobe",
        id_province: 7,
        id: null,
      },
    };
    
    console.log(process(data))

    【讨论】:

      猜你喜欢
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      相关资源
      最近更新 更多