将数组添加到Javascript对象

时间:2014-01-15 23:00:27

标签: javascript arrays javascript-objects

我想要最终将一些代码放入JSON对象中。但首先我要创建一个javascript对象,并在该对象中添加一个值数组。听起来很简单,但我的方法似乎不对。首先我创建一个基本对象,设置几个字段。最后,迭代一堆复选框,然后,如果在该值上检查一个复选框。

在最后一步,我需要将该数组添加到我的对象(myData),然后JSONify它。

我是如何做到这一点的想法,似乎是myData.push(过滤器);不起作用......

请注意,对象本身不是数组,我想在对象中放置一个数组。

       var myData = new Object();

        myData.deviceId = equipId;

        myData.dateTo = dateTo
        myData.dateFrom = dateFrom;
        myData.numResults = $("#numResults").val();
        var i=0;
        var filters = [];
        $('input[type=checkbox]').each(function () {
               if (this.checked) {
                   allData += $(this).val() + ",";
                    filters[i] = {
                        filterIds: $(this).val()
                    };
                    ++i;
               }
            });

        myData.push(filters);

3 个答案:

答案 0 :(得分:0)

这不是如何向对象添加项目,更改

myData.push(filters);

myData.filters = filters;

此外,可能会将= new Object更改为= {}。没有区别,但它更容易阅读,因为文字符号占用的空间更少。

详细了解Array.prototype.push

答案 1 :(得分:0)

使用pushfilters数组添加元素。使用属性赋值将另一个属性添加到myData对象。

    var myData = {
        deviceId: equipId,
        dateTo: dateTo,
        dateFrom: dateFrom,
        numResults: $("#numResults").val()
    };
    var filters = [];
    $('input[type=checkbox]').each(function () {
        if (this.checked) {
            allData += $(this).val() + ",";
            filters.push({
                filterIds: $(this).val()
            });
        }
    });

    myData.filters = filters;

顺便说一句,请勿使用new Object()创建对象,请使用{}

答案 2 :(得分:0)

不需要额外的阵列和i。

var myData = {}

myData.deviceId = equipId;

myData.dateTo = dateTo
myData.dateFrom = dateFrom;
myData.numResults = $("#numResults").val();
myData.filters = [];
$('input[type=checkbox]').each(function () {
    if (this.checked) {
        allData += $(this).val() + ",";
        myData.filters.push({
            filterIds: $(this).val()
        });
    }
});