将数组转换为Object?

时间:2014-01-29 17:39:30

标签: javascript jquery arrays object

我有一个包含多个对象的数组:

  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:对不好的头衔抱歉。

2 个答案:

答案 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);