javascript - $.extend() = 与服务器循环一起使用时不扩展

标签 javascript jquery object extend

我正在尝试创建 2 个空白对象,运行一个 php 循环来填充其中 1 个对象,然后将这些对象扩展在一起......最终创建 1 个包含许多对象的对象。

这是逻辑/代码(注意,服务器的东西是专有的,但它运行 php 并且工作正常):

var allUsers = {};
var singleUser = {};

$(document).ready(function(){

<fm:UserList 
    fields="id,firstname,lastname,geo_latitude,geo_longitude,meta,externalids"
> 

    <fm:Loop> 

        singleUser = {
            'index'             : '{$loop.index}',
            'id'                : '{$user.id}',
            'firstname'         : '{$user.firstname}',
            'lastname'          : '{$user.lastname}',
            'geo_latitude'      : '{$user.geo_latitude}',
            'geo_longitude'     : '{$user.geo_longitude}',
            'company'           : '{$user.meta.company}',
            'twitter'           : '{$user.meta.twitter}',
            'externalprovider'  : '{$user.externalids.0.external_id_provider}',
            'externalid'        : '{$user.externalids.0.external_parsed_id}'

        }
        /* Merge singleUser into allUsers */
        $.extend(allUsers,singleUser);

    </fm:Loop>
</fm:UserList>

console.log(allUsers);
});

以下是 get 放在页面上的内容:

var allUsers = {};
var setUser = {};

    $(document).ready(function(){

        setUser = {
            'index'             : '0',
            'id'                : '1930039',
            'firstname'         : 'Devo',
            'lastname'          : 'Brown',
            'geo_latitude'      : '-46.81610453612681',
            'geo_longitude'     : '-70.6640625',
            'company'           : 'Filemobile',
            'twitter'           : 'devinbrownca',
            'externalprovider'  : '',
            'externalid'        : ''

        }
        /* Merge setUser into passed allUsers */
        $.extend(allUsers,setUser);



        setUser = {
            'index'             : '1',
            'id'                : '1930025',
            'firstname'         : 'Aidan',
            'lastname'          : 'Roach',
            'geo_latitude'      : '51.032184898096396',
            'geo_longitude'     : '-108.6328125',
            'company'           : '',
            'twitter'           : '',
            'externalprovider'  : '',
            'externalid'        : ''

        }
        /* Merge setUser into passed allUsers */
        $.extend(allUsers,setUser);



        setUser = {
            'index'             : '2',
            'id'                : '1930024',
            'firstname'         : 'Devin',
            'lastname'          : 'Brown ',
            'geo_latitude'      : '42.89743256946478',
            'geo_longitude'     : '-101.6015625',
            'company'           : '',
            'twitter'           : '',
            'externalprovider'  : '',
            'externalid'        : ''

        }
        /* Merge setUser into passed allUsers */
        $.extend(allUsers,setUser);

console.log(allUsers);
});

在函数结束时,控制台仅记录一个对象,即最后创建的对象。

知道我做错了什么吗?

最佳答案

$.extend 正在将一个对象的属性复制到另一个对象。

我猜你需要一个数组

var allUsers = [];

 /* Push singleUser into allUsers */
 allUsers.push(singleUser);

关于javascript - $.extend() = 与服务器循环一起使用时不扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645901/

相关文章:

object - Makefile 将不同目录中的源文件中的目标文件放入单个单独的目录中?

java - 如何从 JNI 调用(C++)获取 Java 对象?

javascript - 如何在div之间创建一个中断

php - 使用javascript逐字符显示标签

jQuery - 重置 .each 循环内的变量值

jquery - 菜单背景颜色不起作用

c++ - 代码正在打印对象的内存位置而不是对象本身

javascript - 处理从未调用过的回调?异步 JavaScript

javascript - 将数组中的值插入到不同的 span 标签中

javascript - 只计算一次具有更多相等单元格的行