[英]foreach for javascript, json array
我有一個看起來像這樣的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
我不確定如何執行此操作,我嘗試了一次foreach,但未成功。
所有幫助將不勝感激。
首先, 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"}
它們分別變為:
\\\\b
成為\\b
退格控制字符) 您可以再次逃脫它,但是沒有必要。 有效的JSON始終是有效的JavaScript對象,您可以相信自己的PHP不在其中包含注入代碼。
var justDates = [];
for (var i=0; i < unavailableDates1.length; i++) {
justDates.push(unavailableDates1[i]['RegDate']);
}
每個對象({'RegDate:'date'})都是javascript數組中的一個項目。 要獲取項目,請使用數字索引。 因此要獲取第一項將是theArray[0]
這將為您提供{"RegDate":"31-03-2011"}
。 然后,要獲取該特定日期字符串,只需使用鍵theArray[0]['RegDate']
!。 因此,由於要遍歷列表的每個成員,因此應使用.length
來獲取列表長度。
For循環通常用於這種類型的迭代,而不用於..in。 因為for可以訪問不需要的屬性! 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);
我注意到您也在這里標記了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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.