【问题标题】:Not able to retrieve data from array of objects?无法从对象数组中检索数据?
【发布时间】:2016-06-17 22:20:52
【问题描述】:

我正在本地存储中保存对象列表。通过以下代码

var employeeArray = [];
 function SaveData() {
        counter = counter + 1;
        employeeArray.push
        ({
            ID : counter,
            FirstName : $('#txtFirstName').val(),
            LastName : $('#txtLastName').val(),
            MobileNo : $('#txtMobileNo').val(),
            Address : $('#txtAddress').val()
        })
        localStorage.setItem("employee", employeeArray);
        BindData();
    }

当我通过以下代码从本地存储中检索数据时

function BindData() {
        var employee = localStorage.getItem("employee");
        for (var key in employee) {
            alert(key);

            var tr = CreateElement('tr', null)
            tr.append(CreateElement('td', employee[key]));
            $('#tblData').append(tr);
        }
    }

key 只给我索引值,例如 0,1,2.... 我正在寻找要使用的属性名称,例如 key.ID

如何实现??

【问题讨论】:

  • localStorage 只理解字符串。您应该在设置时对结构进行字符串化,并在获取时解码。

标签: javascript jquery arrays local-storage


【解决方案1】:

在storage api中,值是作为字符串值存储的,所以需要先将employeeArray转成json字符串再存储

localStorage.setItem("employee", JSON.stringify(employeeArray));

然后在阅读时,您需要将字符串转换回类似的对象

function BindData() {
  var employee = JSON.parse(localStorage.getItem("employee"));
  employee.forEach(function(emp) {
    var tr = CreateElement('tr', null)
    tr.append(CreateElement('td', emp.FirstName));
    $('#tblData').append(tr);
  })
}

【讨论】:

  • 谢谢@Arun 我不知道字符串值。我可以使用 .foreach 以外的任何其他循环来检索属性值
  • 你可以使用任何 for 循环,for $.each()
猜你喜欢
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
相关资源
最近更新 更多