2012-07-27 51 views
0

我想通過提取其他數組的日期來創建一個數組,然後用逗號將這些值分隔成一個字符串。從現有數組創建一個數組

 array.push({date:created_at,username:user}); 
     for (i in array) { 
     var combined=new array(); 
     combined = array[i].date; 
       } 
     console.log(combined); 

我是新來的JavaScript和難以遵循陣列。謝謝!任何人也可以推薦我一本JavaScript的好書嗎?

+0

您要重新聲明在for循環的每個迭代的數組。另外,請嘗試http://www.w3schools.com。 – 2012-07-27 13:44:33

回答

1

試試這個

var originalArray = [{date:"2012-01-01", username: "first"}, {date:"2012-01-02", username: "second"}]; 

// First step: Get a dateArray with only the dates 
var dateArray = []; 
for (var i in originalArray) { 
    dateArray.push(originalArray[i].date); 
} 

// Or if you prefer to cut a few lines 
// dateArray = originalArray.map(function(x) { return x.date; }); 

// Second step: Get it as a comma separated string 
var datesString = dateArray.join(","); 

console.log(dateArray); // ["2012-01-01","2012-01-02"] 
console.log(datesString); // 2012-01-01,2012-01-02 

一個比較流行的書籍是「的Javascript好的部分」由Douglas Crockford的 http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742

+0

加入比我的垃圾好多了。哦,這是我猜想的星期五。 – VoronoiPotato 2012-07-27 13:48:42

+0

而當我們談論乾淨的代碼,它是星期五。讓我們用array.map來慶祝! 第一個步驟可能是: dateArray = originalArray.map(函數(X){返回x.date;}); – 2012-07-27 13:53:10

+0

One liner(can not really recommend it though):[{date:「2012-01-01」,username:「first」},{date:「2012-01-02」,username:「second」}]。map (function(a){return a.date;})。join(「,」); – 2012-07-27 13:56:37

0

我個人偏愛的Javascript好的部分,但有一個整體編程書籍上的社區維基。至於你的問題,如果你想使用一個字符串,你需要使用一個字符串而不是一個數組作爲組合變量。

array.push({date:created_at,username:user}); 
var combined = array.map(function(a) { return a.date; }).join(", "); 

這樣做肯定有更好的方法,但這只是一個可行的例子。通過連接一個字符串,它隱式地將數組[i] .date轉換爲一個字符串,如果它還沒有。

編輯:修復我的代碼,不要太可怕。

0

這裏是代碼:

var firstArray = new Array(new Date(), "hello", "something", new Date()); 
var combined = new Array(); 

for(i in firstArray) { 
    if(firstArray[i] instanceof Date) { 
     combined[combined.length] = firstArray[i]; 
    } 
} 

var theString = combined.join(","); 

alert(combined.length); 
alert(theString);