javascript - 将 C# 列表转换为 javascript 数组

标签 javascript c# arrays foreach

我的 C# Controller 方法有一个 SelectList,其中包含 8 个文本/值对。我想将其转换为 JavaScript 数组,我可以在剑道网格的foreignKey 列中访问该数组。我的 arObjArray 的结构符合预期。唯一的问题是数组的内容是错误的。我没有得到与 packageList 项一致的 8 对列表,而是得到了一个 8 行数组,其中每行都具有与 packageList 中最后一项相同的值。我的javascript函数的相关部分是这样的:

var arObjArray = [];
var arObj = {};

@foreach (SelectListItem d in packageList)
{
    @:arObj["text"] = "@d.Text";
    @:arObj["value"] = Number("@d.Value");

    @:arObjArray.push(arObj);
}
console.log(arObjArray)

我在这里缺少什么?

最佳答案

对象通过引用传递,与 C# 中的实例相同。在 foreach 循环中,您实际上一遍又一遍地重用同一个对象,因为它只分配给一个空对象一次(var arObj = {}; 在循环外部)。因此,您多次将一个对象推送到数组,并在每次数组迭代时修改该对象的值。

在循环内声明并分配arObj:

@foreach (SelectListItem d in packageList)
{
    var arObj = {};
    @:arObj["text"] = "@d.Text";
    @:arObj["value"] = Number("@d.Value");

    @:arObjArray.push(arObj);
}

关于javascript - 将 C# 列表转换为 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724551/

相关文章:

数组中所有对象之间的javascript函数共享

javascript - JS lambda默认返回值

c# - 使用 C# 的线程池问题

python - np.round 或 np.around 不起作用

python - 根据 2D numpy 数组过滤 3D numpy 数组

javascript - 如何修复被移动超过 1 的值

javascript - 心理游戏js : create pattern and check user input

c# - 操纵 setter 以避免 null

c# - 如何提取 xaml/xml 文件中特定标签的所有出现?

jQuery:将函数绑定(bind)到数组中的对象,避免关闭错误