foreach中的对象仅存储最后一个值JavaScript

时间:2018-07-16 11:01:14

标签: javascript object

我有一种需要存储在数据库中的特定格式,而且我几乎就在那里,只是不知道并且找不到解决方案,如何使foreach来存储所有对象,而不仅仅是最后一个。这是仅返回我最后结果的原始代码:

optionDetails.done((data) => {

    _.each(data, function(option, key) {
        column.config.options_product = {
            id: "product_" + key.toString(),
            text: option.identifier
        };

    });
}

我知道可以将其设置为空数组并使用数组存储值,但是格式也将是数组,并且不会保存在数据库中。

所以我应该如何处理,也许将其存储在数组中然后转换为对象。理想的情况是串联:

optionDetails.done((data) => {

    _.each(data, function(option, key) {
        column.config.options_product += {
            id: "product_" + key.toString(),
            text: option.identifier
        };

    });
}

这是我需要的格式:

{id: "product_4", text: "1000003"}

但这不起作用。如果有人知道正确的道路,请分享。谢谢。

2 个答案:

答案 0 :(得分:2)

+ =将不连接对象。您需要改为将值添加到特定键。您需要显式添加对象。因此,首先将其转换为数组,然后使用push运算符来推送对象。

即:

column.config.options_product = []
 _.each(data, function(option, key) {
        column.config.options_product.push({
            id: "product_" + key.toString(),
            text: option.identifier
        };

    }));

答案 1 :(得分:1)

如果您要存储{id: "product_4", text: "1000003"}之类的多个对象,则可以 必须(i)将它们包装成数组;或(ii)为每个密钥提供唯一的密钥,并将其存储在对象中:

选项(i)

column.config.options_product = []

optionDetails.done((data) => {
    _.each(data, function(option, key) {
        column.config.options_product.push({
            id: "product_" + key.toString(),
            text: option.identifier
        });
    });
}

输出:

[
    {id: "product_1", text: "foo1"},
    {id: "product_2", text: "foo2"},
    // (...)
]

选项(ii)

column.config.options_product = {}

optionDetails.done((data) => {
    _.each(data, function(option, key) {
        column.config.options_product[key] = {
            id: "product_" + key.toString(),
            text: option.identifier
        };
    });
}

输出:

{
    "0": {id: "product_1", text: "foo1"},
    "1": {id: "product_2", text: "foo2"},
    // (...)
}