我有一个JSON数组,如下所示:
[{"RegDate":"31-03-2011"},{"RegDate":"29-07-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"12-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"23-08-2011"},{"RegDate":"07-09-2011"},{"RegDate":"09-09-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"03-11-2011"},{"RegDate":"03-11-2011"},{"RegDate":"11-11-2011"},{"RegDate":"16-11-2011"},{"RegDate":"18-11-2011"},{"RegDate":"21-11-2011"},{"RegDate":"02-12-2011"},{"RegDate":"02-12-2011"},{"RegDate":"12-12-2011"}]
获取这个json数组的代码如下:
var unavailableDates1 = jQuery.parseJSON('<?php echo json_encode($noticesDates) ?>');
我也在尝试获取该数组(最初是一个多维数组)中的所有日期,并将其放入一个数组中:
var unavailableDates = ["9-3-2012", "14-3-2012", "15-3-2012"]; for example
我不确定该怎么做,我试过前臂,但没有成功。
我们将不胜感激。
首先,parseJSON
是不必要的,而且实际上是危险的。取出:
var unavailableDates1 = <?php echo json_encode($noticesDates) ?>;
然后,只需使用jQuery.map
:
var unavailableDates = $.map(unavailableDates1, function(item) {
return item.RegDate;
});
使用这样的字符串对以下三个对象来说是危险的,例如:
{"key":"Backslash here: ''"}
{"key":"I'm a horse!"}
{"key":"Some''backslash"}
它们分别成为:
- SyntaxError:意外的输入结尾(单转义转义字符串结尾)
- SyntaxError:意外的标识符(字符串中出现未转义的单引号,实际上是XSS漏洞)
- 对象
key:"Someackslash"(''b
变为'b
退格控制字符)
__proto__:对象
你可以再次逃离,但没有必要;有效的JSON始终是一个有效的JavaScript对象,您可以相信自己的PHP不会在其中包含注入代码。
var justDates = [];
for (var i=0; i < unavailableDates1.length; i++) {
justDates.push(unavailableDates1[i]['RegDate']);
}
每个Object({'RegDate:'date'})都是javascript数组中的一个项。要获取项目,请使用数字索引。所以要得到第一个项目将是theArray[0]
,这将给你{"RegDate":"31-03-2011"}
。然后,要获得特定的日期字符串,您只需要使用关键字theArray[0]['RegDate']
!。因此,既然要遍历列表中的每个成员,就应该使用.length
来获取列表长度。
For循环通常用于这种类型的迭代,而不是用于。。in。因为for in可以访问不需要的属性!http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/
了解如何迭代数组。你可以做一些类似的事情:
dates = new Array();
unavailableDates1.forEach(function (obj){
dates.push(obj.RegDate);
};
尝试以下操作:
JavaScript:
var x = [{"RegDate":"31-03-2011"},{"RegDate":"29-07-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"12-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"23-08-2011"},{"RegDate":"07-09-2011"},{"RegDate":"09-09-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"03-11-2011"},{"RegDate":"03-11-2011"},{"RegDate":"11-11-2011"},{"RegDate":"16-11-2011"},{"RegDate":"18-11-2011"},{"RegDate":"21-11-2011"},{"RegDate":"02-12-2011"},{"RegDate":"02-12-2011"},{"RegDate":"12-12-2011"}];
var ary = new Array();
for (foo in x) {
ary.push(x[foo].RegDate);
}
console.log(ary);
jsFiddle示例。
我注意到你在这里也标记了jquery,所以这里有一个jquery解决方案:
http://jsfiddle.net/aztechy/DK9KM/
var foo = [
{"RegDate":"31-03-2011"},
{"RegDate":"29-07-2011"},
{"RegDate":"09-08-2011"},
{"RegDate":"09-08-2011"}
];
var datesArray = [];
$.each(foo, function() {
datesArray.push(this.RegDate);
});
console.log(datesArray);
试试这个,它可能会起作用。
var unavailableDates = [];
for(var i = 0; i < unavailableDates1.length; i++){
unavailableDates[i] = unavailableDates1[i].RegDate;
}
for(var i=0;i<unavailableDates.length;i++) {
unavailableDates[i] = unavailableDates[i].RegDate;
}