JavaScript数组合并对象(不需要的行为)

时间:2017-06-21 16:58:47

标签: javascript

此:

var requestOptions = [
                {
                    id: 1
                },
                {
                    id: 2
                }];

console.log(requestOptions);

回复我:

0: Object
id: 2
1: Object
id: 2

为什么这样?看起来他们正在合并,我不想要它。

****完整代码如下*** 正如我在评论中提到的,上面的简化版本运行正常(抱歉)。 但是,以下不是。

setDataTable函数,使用相同的变量名进行合并和验证,然后发送Ajax调用。

google.charts.setOnLoadCallback(function() {
        // Set datasources

        var requestOptions = [
            {
                id: 1,
                fields: 'cidade_uf, uf, data as Data, SUM(demanda) AS Demanda, SUM(mercado) AS Mercado',
                formats: '[{"type":"string"}, {"type":"string"}, {"type":"date", "options": {"format":"M Y"}},{"type":"decimal","options":{"cases":2}},{"type":"money","options":{"sign":"R$"}}]',
                groupby: 'cidade_uf, uf, data',
                s: '<?=$source1?>'
            },
            {
                id: 2,
                fields: 'data as Data, SUM(demanda)/SUM(mercado) as `Mkt Share (%)`',
                formats: '[{"type":"date", "options": {"format": "M Y"}}, {"type":"percent", "options":{"cases": 0}}]',
                groupby: 'data',
                s: '<?=$source1?>'
            }];

        console.log(requestOptions);
        setDataTable(requestOptions,dataCallback);
    });

1 个答案:

答案 0 :(得分:0)

我发现了问题,实际上是在这里(对不起,我没有发布):

var mergeRequest = {
    fields: '',
    formats: '',
    condition: '',
    groupby: '',
    orderby: '',
    order: '',
    limit: '',
    s: '',
}
        $.each(requestOptions, function( index ) {
            requestOptions[index] = $.extend(mergeRequest, requestOptions[index]);
        });

并将其更改为(使用新变量合并选项)并在循环中将mergeOptions重新声明为空:

    var requestOptionsVal = []
        $.each(requestOptions, function( index ) {
var mergeRequest = {
            fields: '',
            formats: '',
            condition: '',
            groupby: '',
            orderby: '',
            order: '',
            limit: '',
            s: '',
        };
            requestOptionsVal[index] = $.extend(mergeRequest, requestOptions[index]);
        });

事实证明,正如@PatrickBarr所提到的,记录结果有一个延迟,它在执行的不确定点输出变量值。我不知道这一点,我当然不会太依赖于通过控制台进行调试。

谢谢,