javascript - 将对象推送到数组中只返回最后推送的对象

标签 javascript html datatable yui

我正在处理 YUI 数据表,以填充我想从外部动态发送列及其值的数据表,为此我编写了以下代码:

<html>
<script src="http://yui.yahooapis.com/3.17.2/build/yui/yui-min.js"></script>
<div class="example yui3-skin-sam" id="simple"> <!-- You need this skin class -->
</div>

<script>
var cols = ["id", "name", "price"];
var obj = {
    id: "",
    name: "",
    price: ""
};
var data2 = new Array();
obj.id = "ga";
obj.name = "gadget";
obj.price = "$6.99";
data2.push(obj);
obj.id = "ga2";
obj.name = "gadget2";
obj.price = "$7.99";
data2.push(obj);
obj.id = "ga3";
obj.name = "gadget3";
obj.price = "$8.99";
data2.push(obj);
YUI().use("datatable", function (Y) {
    // A table from data with keys that work fine as column names
    var simple = new Y.DataTable({
        columns: cols,
        data   : data2,
        summary: "Price sheet for inventory parts",
        caption: "Example table with simple columns"
    });

    simple.render("#simple");

});
</script>
</html>

现在的问题是,它只显示 data2 中推送的最后一个对象。请告诉我为什么它不显示所有三个对象。此代码的结果表是

id      name    price

ga3   gadget3   $8.99

最佳答案

不确定这是否相关,但如果人们仍然来这里寻找简单的解决方案......

只需将对象字符串化并再次进行 JSON.parse 以复制它,而不是像这样引用对象;

data2.push(JSON.parse(JSON.stringify(obj)));

关于javascript - 将对象推送到数组中只返回最后推送的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25321777/

相关文章:

css - 如何删除文本上方自动添加的空格?

user-interface - 从 Richfaces 表中选择项目的最简洁方法?选择列表?

javascript - 如何适应不同表格的 td 宽度?

javascript - 处理西里尔编码的 Node js有什么问题

javascript - 添加多个输入

javascript - 使用 JavaScript 获取 html 中 &lt;title&gt; 元素的内容

javascript - 流程图使用jquery从span获取数据

javascript - 我怎样才能在桌面登录 session 期间记住一些东西

c# - DataTable.Expression方法不使用C#整数除法

c# - 当我需要向用户显示大量数据时,如何优化 RAM 使用?