javascript - 在迭代中检索对象名称

标签 javascript json typescript

我有一个文件 version.json:

{
 "components":{
   "toto": {
     "test": [
       {
         "name": "test-toto",
         "type": "html"
       }
      ]
    },
    "tata": {
     "test": [
       {
         "name": "test-tata",
         "type": "html"
       }
      ]
    },
    "titi": {
     "test": [
       {
         "name": "test-titi",
         "type": "html"
       }
      ]
    }
 "versions": {
   "test-toto": "2.1",
   "test-tata": "2.2",
   "test-titi": "2.3"
   }

我有一个文件 version2.json:

{
 "components":{
   "toto": {
     "test": [
       {
         "name": "test-toto",
         "type": "html"
       }
      ]
    },
    "tata": {
     "test": [
       {
         "name": "test-tata",
         "type": "html"
       }
      ]
    },
    "titi": {
     "test": [
       {
         "name": "test-tata",
         "type": "html"
       }
      ]
    }
 "versions": {
   "test-toto": "1.1"
   "test-tata": "1.2",
   "test-titi": "2.3"
   }

我正在尝试使用以下语法创建 JSON:

 {
   components: "",
   newVersion: "",
   oldVersion: "",
 }

我只想推送版本与其组件名称不同的版本,如下所示:

[{
   components: "toto",
   newVersion: "2.1",
   oldVersion: "1.1"
 },
 {
   components: "tata",
   newVersion: "2.2",
   oldVersion: "1.2",
 }
 ]

我在做什么:

public async listDiffer(): Promise<any[]> {

    const showVersion = fs.readFileSync("versions.json", "utf8");
    const json1 = JSON.parse(showVersion);
    const list1 = json1.versions;

    const showVersion2 = fs.readFileSync("versions2.json", "utf8");
    const json2 = JSON.parse(showVersion2);
    const list2 = json2.versions;

    const diffList: Array<{ components: string; newVersion: string; oldVersion: string }> = [];

    const keysFromHead = Object.keys(list1);

        keysFromHead.forEach((key) => {
            if (list1[key] !== list2[key]) {
                diffList.push({
                    components: ,
                    newVersion: list1[key],
                    oldVersion: list2[key],
                });
            }
        });
    });
    return diffList;
}

我有什么:

[{
   components: ,
   newVersion: "2.1",
   oldVersion: "1.1"
 },
 {
   components: ,
   newVersion: "2.2",
   oldVersion: "1.2",
 }
 ]

如何检索组件名称(toto 和 tata) 感谢您的帮助

最佳答案

1) 您的 JSON 有语法错误 - 您可以检查错误并修复它:) ==> 这里 https://jsonformatter.curiousconcept.com/

关于javascript - 在迭代中检索对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60339728/

相关文章:

php - 在js中推送数组看起来无法正常工作

javascript - 将 JSON 字符串日期转换为 JavaScript(Google Apps 脚本)

javascript - Angular 2 测试具有虚假依赖项的组件

Angular Autocomplete - 选择元素时从列表中删除元素

javascript - 如何通过 JavaScript 创建 CSS 作用域以防止 CSS 作用于页面的另一部分?

javascript - 通过jquery提交表单时无法收到警报消息

ios - 在Swift中将复杂的JSON保存到核心数据

javascript - 如何在 Angular 的请求 header 中发送时区偏移量?

javascript - jQuery slider 重定向图像

javascript - AngularJS XMLHttpRequest 无法加载 X。不存在 'Access-Control-Allow-Origin' header