尝试访问作为字符串的对象文字键

时间:2013-11-20 20:17:51

标签: javascript object-literal

我正在尝试将字符串用作对象文字中的键,然后在将该字符串添加到HTML li元素中的数据属性的函数中使用该字符串。基本思想是创建用户ID,然后联系特定用户进行更新/删除。创建部分工作正常。

首先,我需要将信息输入到我的li元素中,以便点击为我提供我想要的ID。下面的代码有效,但只是因为我在对象中包含了id。复制字符串 - userguid键 - 在对象内部使用它似乎是愚蠢和错误的。

users = {
  "0c7270bd-38e8-4db2-ae92-244de019c543": {
    datecreated: "2013-10-15",
    email: "jimmy@example.com",
    firstname: "Jimmy",
    lastname: "Smith",
    username: "jimmysmith",
    password: "foobar",
    notify: "barbour@4j.lane.edu",
    userguid: "0c7270bd-38e8-4db2-ae92-244de019c543"
  },
  "0c7270bd-38e8-4db2-ae92-244de019mju7": {
    datecreated: "2013-10-16",
    email: "mary@example.com",
    firstname: "Mary",
    lastname: "Jones",
    username: "maryjones",
    password: "foobar2",
    notify: "barbour@4j.lane.edu",
    userguid: "0c7270bd-38e8-4db2-ae92-244de019mju7"
  }
};

使用它的功能:

displayUserList = function() {
  var newHTML;
  users = JSON.parse(localStorage["users"]);
  newHTML = [];
  $.each(users, function(index, user) {
    return newHTML.push('<li data-userguid="' + user.userguid + '" data-firstname="' + user.firstname + '"><span class="userfullname">' + user.firstname + ' ' + user.lastname + '</span></li>');
  });
  /*
    jquery css going on here
  */
};

我想从对象内部获取userguid。我已经尝试使用各种各样的东西来定位该字符串并将其带入html但没有任何作用。我还希望能够将其定位为更新和删除。

我试过

user      user[user]   user.user

我开始觉得我错过了使用对象文字的基本规则,但我没有在搜索中找到它。

感谢您的帮助。

查理·马吉

1 个答案:

答案 0 :(得分:1)

当使用$.each迭代对象时,index参数会接收键,因此您可以这样做:

newHTML.push('<li data-userguid="' + index + '" data-firstname="' + user.firstname + '"><span class="userfullname">' + user.firstname + ' ' + user.lastname + '</span></li>');

此声明中您不需要return$.each()对返回值的唯一作用是对===false进行测试 - 如果是,则循环结束。