簡體   English   中英

foreach for javascript,json數組

[英]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"}

它們分別變為:

  • SyntaxError:意外的輸入結尾(單轉義轉義字符串的結尾)
  • SyntaxError:意外的標識符(不帶引號的單引號引起來的字符串, 實際上是XSS漏洞
  • 賓語
    密鑰:“ Someackslash”( \\\\b成為\\b退格控制字符)
    __proto__:對象

您可以再次逃脫它,但是沒有必要。 有效的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);

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM