我有一个包含多个对象的数组:
var getUsers = function (){
allUsers = [];
$().SPServices({
operation: "GetUserCollectionFromSite",
completefunc: function(xData, Status){
var responseXML = $(xData.responseXML);
responseXML.find("User").each(function(){
allUsers.push({
id: $(this).attr("ID"),
name: $(this).attr("Name"),
domain: $(this).attr("LoginName"),
email: $(this).attr("Email"),
isAdmin: $(this).attr("IsSiteAdmin")
});
});
}
});
return allUsers;
}
我正在尝试更改它,以便代替使用数组,allUsers
代替对象,顶级属性是ID,每个ID属性包含用户信息。
这是我尝试的但是它有点导致我的应用程序由于某种原因停止。
var getUsers = function (){
allUsers = {};
$().SPServices({
operation: "GetUserCollectionFromSite",
completefunc: function(xData, Status){
var responseXML = $(xData.responseXML);
responseXML.find("User").each(function(){
//This is pretty much where I'm at a lost
allUsers[$(this).attr("ID")]:{
name: $(this).attr("Name"),
domain: $(this).attr("LoginName"),
email: $(this).attr("Email"),
isAdmin: $(this).attr("IsSiteAdmin")
};
});
}
});
return allUsers;
}
我正在尝试获取一个结构如下的对象:
var allUsers = {
"68": {
id: 68,
name: 'mike',
domain: 'i: 0#.f | admembers | mike.ca',
email: 'mike.ca',
isAdmin: false
}
};
PS:对不好的头衔抱歉。
答案 0 :(得分:1)
在行:
=
替换为allUsers[$(this).attr("ID")] : {
allUsers[$(this).attr("ID")] = {
id: $(this).attr("ID"),
name: $(this).attr("Name"),
domain: $(this).attr("LoginName"),
email: $(this).attr("Email"),
isAdmin: $(this).attr("IsSiteAdmin")
};
答案 1 :(得分:1)
你这里有一个错字:
allUsers[$(this).attr("ID")] : {
^
:
应为=
,因为这是对密钥的分配。
allUsers[$(this).attr("ID")] = {
其他一切看起来都不错。除非您可以将$(this)
分配给变量以节省您进行DOM查找。
var self = $(this);