推送复合数组元素

时间:2011-08-12 22:06:38

标签: javascript arrays push

考虑以下“推送”方案。

(global) var refs = [] ;

var record = {id:1, references: ["12","145"]};
refs.push(record);

然而,当我使用Chrome进行调试时,跳过了push函数,最后refs数组为空。是什么原因?

编辑:

完整的代码是这样的:

    gadgets.sciverse.makeRequest(entry['prism:url'], function(obj) {
        var testJson = $.xml2json(obj['text']);
        //  console.log(testJson);

        var tempArr = [];

        if (!testJson) {
            console.log('empty secondary response');
            return ;
        }

        var refSet = testJson ['item']['bibrecord']['tail']['bibliography']['reference'];

        if (!refSet)
            tempArr = [] ;
        else {
            $.each(refSet, function(i, e){
                tempArr.push(e['ref_info']['refd_itemidlist']['itemid']['text']);
            })
        }

        var verySillyTemp = {
            id: pid,
            arr: tempArr
        } ;

        refs.push( verySillyTemp );
    },params);

    console.log(refs);

3 个答案:

答案 0 :(得分:2)

看起来在异步调用中设置了refs,并且在设置它之前记录它。

答案 1 :(得分:1)

考虑在性能关键循环和函数中使用替代原语操作而不是函数调用。

您可以使用以下方法。

record[record.length] = id;

这只是一个虚拟示例,您可以通过记录数组运行for循环。

原始操作可以比函数调用更快。

答案 2 :(得分:0)

语法错误:

var record = {id:1, references: ["12","145"]};