首页 > 解决方案 > Javascript在MVC视图中使用for循环创建动态数组

问题描述

我有一个来自控制器的名为statusList的状态列表。

@{
    var statusList = @Html.Raw(Json.Encode(Model.Statuses));
}

我想像下面这样解析它。我在 javascript 中使用类似这样的数组:

var options = {
    '0': '',
    '1': 'Pending',
    '2': 'In Progress',
    '3': 'Done'
};

当我编写此硬编码以进行测试时,它按预期工作。但是当我尝试像这样在 for 循环中填充它时:

var options = [];

for (var i = 0; i < statusList.length; i++) {
    var id = statusList[i]["Id"];
    var name = statusList[i]["Status"];

    options.push({id : name});
}

这写 [object Object] 来选择输入。我在这里做错了什么?

标签: javascript

解决方案


尝试这样的事情。id 和 name 是动态的,因此在将其推送到数组时必须将它们放在括号中。你拥有它的方式 现在你的数组看起来像 : [{id : name},{id : name}]。另外,您看到的原因[Object Object]是您必须对结果进行字符串化才能看到里面的内容。

var options = [];

        for (var i = 0; i < statusList.length; i++) {
            var id = statusList[i].id;
            var name = statusList[i].status;

            options.push({[id] : [name]});
        }

console.log(JSON.stringify(options))

推荐阅读