使用JQuery从数组中检索最后一组键值

时间:2014-01-10 15:33:56

标签: javascript jquery html json

目前正在尝试完成Uni任务的完整noob。我们正在使用HTML,css和JQuery创建一个Web应用程序。我在网上搜索了一个答案但却无法弄清楚我应该做些什么。

我已经设置了一个页面,用户可以在其中输入班次的详细信息,当他们提交班次时,数据会被推送到使用JSON stringify存储在localStorage中的数组中。那部分很有效,在这里:

var shift = {'location':$('#shift_location').val(), 'start_time':$('#shift_start_time').val(), 'end_time':$('#shift_end_time').val()};
var shift_list = JSON.parse(localStorage.shift);
shift_list.push(shift);
localStorage.shift = JSON.stringify(shift_list);

然而,我需要采取最后添加的'shift_location''shift_start_time'和'shift_end_time'并将其粘贴在页面上的div中。 这是我到目前为止所提出的:

var result = JSON.parse(localStorage.shift);
$.each(result, function(k, v) {
  $('.current_shift').text(k + ":" + v);
}); 

但是,页面上显示的内容为:0:[object Object]

关于如何解决这个问题的任何想法都会很棒。就像我说的那样,我是一个完整的菜鸟,这是我第一次在这里发帖,所以如果我错过了任何重要的代码或错误地将问题框起来,请提前道歉。

由于 詹姆斯

2 个答案:

答案 0 :(得分:3)

你有一个对象数组,你必须先得到数组中的最后一个对象:

var result = JSON.parse(localStorage.getItem('shift'));

var obj = result.pop();

$('.current_shift').text(obj.start_time + ":" + obj.end_time);

答案 1 :(得分:1)

这是一个数组shift_list

所以看起来locationStorage.shift是一个数组。这就是k是整数的原因。试试这个:

$.each(result, function(k, v) {
  $('.current_shift').text(v.location);
}); 

您将看到它是一个对象,因为您的班次存储在对象中。对于调试,您可以这样做:

$.each(result, function(k, v) {
  console.log(v);
  $('.current_shift').text(v.location);
}); 

打开Chrome,然后查看控制台,您将看到对象。