【问题标题】:How do I create a single object and push multiple key-pair values inside?如何创建单个对象并在其中推送多个密钥对值?
【发布时间】:2019-01-06 01:58:22
【问题描述】:

我正在尝试创建一个内部包含多个密钥对值的对象。

我使用的值将来自 API,我正在尝试将响应转换为单个对象。

我的代码:

json_users.forEach(function (user){
    var user_name = user.name;
    var object_user = {user_name: null};

    temp_collection.push(object_user);
})

我想要的结果

{"key_1":val_1, "key_2", val_2}

我得到的结果

[{
    0: {
        .....
    }, 
    1: {
        .....
    }
}]

【问题讨论】:

  • 不清楚你从什么开始。对象中的键是唯一的,因此遍历数组并在同一对象上设置user_name 只会设置一个user_name。如果您可以举一个json_users 的示例,它可能会有所帮助。如果您尝试使用user_name 作为键,请将其放在括号中{[user_name]: values}
  • 能否请您添加一个您正在循环的代码示例,因为我们不知道您是从什么开始的。
  • 我只是希望能够创建一个对象,该对象在推送到它时将包含没有索引的值。像 `{"k1":v1, "k2":v2} 代替 if {[ [0] {"k1":v1} [1] {"k2":v2} ]}
  • @M. Duisenbayev 已经回答了我的问题

标签: javascript jquery arrays json object


【解决方案1】:
var resultObject = {};
json_users.forEach(function (user, index){
    var user_name = user.name;
    var object_user = {user_name: null};

    resultObject["key" + (index + 1)] = object_user;
});

resultObject 将是您所需要的。您可以使用 user.id 或类似的东西,而不是 "key" + (index + 1)。这样,您将拥有一个用户字典,其中键是 ID,值是用户对象

【讨论】:

  • 谢谢!这解决了我的问题。我对 javascript 很陌生,因为我主要使用 Java 开发 Android 应用程序开发,所以我不太熟悉如何很好地操作对象和数组。
【解决方案2】:

你不应该使用.push() - 这是在创建数组。试试这个:

var temp_collection = {};
json_users.forEach((user, index) => temp_collection[`key_${index}`] = user.name);

这将遍历数组json_user,并使用数组中每个对象的name 属性向temp_collection 对象添加一个新属性。

上面确实使用了 ES6 箭头和模板文字,所以这里有一个更广泛接受的版本:

json_users.forEach(function(user, index) {
    temp_collection["key_" + index] = user.name;
})

【讨论】:

  • 我的问题已经得到解答,但我很确定您的回答也有效。也感谢您详细解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2021-10-21
相关资源
最近更新 更多