使用node.js将对象列表添加到字典的通用方法

时间:2017-07-27 16:37:14

标签: json node.js

我是node.js的新手(比如,这是第二天)。我编写了一个脚本,它读取包含用户列表的JSON文件,解析它们,然后将每个用户添加到由usedrname键入的字典中。由于我是新人,我想知道是否有比我提出的更优雅或现成的解决方案。

假设我正在阅读一个名为/users.json的文件,其中包含:

{
    "user1": {
        "first": "Tom",
        "last": "Hanks",
        "job-description": "Movie star"
    },
    "user2": {
        "first": "Dick",
        "last": "Trickle",
        "job-description": "Bar mitzvah entertainer"
    },
    "user3": {
        "first": "Harry",
        "last": "Houdini",
        "job-description": "Escapologist"
    }
}

我创建用户词典的代码如下所示:

const fs = require('fs')

var users = fs.readFile(__dirname + '/users.json', 'utf8', (err, users) => {
    users = JSON.parse(users)
    var userDictionary = toDictionary(users)
    console.log('user dictionary', JSON.stringify(userDictionary, null, 4))
}

function toDictionary(objects)
    var dict = {}
    Object.keys(objects).forEach((key, object) => {
        if (objects.hasOwnProperty(key)) {
            dict[key] = objects[key] // copy whole element to dictionary
        }
    })
    return dict
}

这会在控制台上生成以下内容:

user dictionary {
    "user1": {
        "first": "Tom",
        "last": "Hanks",
        "job-description": "Movie star"
    },
    "user2": {
        "first": "Dick",
        "last": "Trickle",
        "job-description": "Bar mitzvah entertainer"
    },
    "user3": {
        "first": "Harry",
        "last": "Houdini",
        "job-description": "Escapologist"
    }
}

就像我说的,我的代码产生了我想要的结果,但这是实现它们的最佳方法吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

你在这里做了重复的工作,users对象已经一个以username为关键词的字典!