I am trying to create 2 blank objects, run a php loop that fills 1 of them, and then extend the objects together... ultimately to create 1 object with many objects inside.
Here's the logic/code (note, the server stuff is proprietary but it runs off php and is working fine):
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);
});
Here is what get's put on the page:
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);
});
At the end of the function, the console only logs a single object, the last object created.
Any idea what I am doing wrong?
$.extend
is copying properties of one object to another.
I guess you need an array
var allUsers = [];
/* Push singleUser into allUsers */
allUsers.push(singleUser);