2013-04-21 98 views
0

我想通過使用for循環訪問數據庫中的某些記錄來填充數組,然後將某些數據庫字段的內容與文本組合以創建每個數組元素。這是我有:javascript array.push裏面for循環 - 結果不是數組?

var numbers = [7,8]; 
var phsw = []; 
for (var i=0,len=numbers.length;i<len;i++) { 
    selectObj = cObj.select().from("wp_posts").where('ID=?', numbers[i]); 
    result1 = cObj.exec(selectObj); 
    var resource = result1[0].guid; 
    var title = result1[0].post_title; 
    var tnTxt = result1[0].post_title; 
    var tn = resource.replace(/\.jpg/,"-150x150.jpg"); 
    phsw.push({mytitle:'" + title + "', mythumbnail:'" + tn + "', mytntxt:'" + tnTxt + "', myresource:'" + resource +"'}); 
    } 

這創造了我認爲是一個數組,除了它顯然不是一個真正的數組。當我使用console.log(phsw)來查看它的內容時,我得到:

[{mytitle:'title',mythumbnail:'imagefile1tnlink',mytntxt:'thumbtxt1',myresource:'imagefile1link'},{ mytitle: '標題2',mythumbnail: 'imagefile2tnlink',mytntxt: 'thumbtxt2',myresource: 'imagefile2link'}]

,我應該得到這個:

[目標對象]

,如果它是真的是一個數組(對嗎?)。

我在Application Craft中使用它,並且phsw數組是用服務器端javascript創建的,然後被傳遞給應用程序端的回調函數,但是當它回到應用程序端時,我不能使用它來填充小部件,因爲它不是一個真正的數組。我如何確保phsw是一個數組?

是的,我確定這段代碼並不是最乾淨或最有效的方式;我的(相當生疏的)經驗是在PHP和MySQL中,而不是JavaScript,所以我總是樂於提供更好的方式來做事情的建議!

+0

如果它是一個數組,那麼類型將是'[object Array]'。 – elclanrs 2013-04-21 20:02:45

回答

0

沒有一切都是正確的。它實際上是一個包含2個對象的數組。

你期望你應該得到[object Object]是錯誤的。

+0

好的,但是當我使用console.log(result1)時,我得到[object Object],result1是一個數組。如果phsw是一個數組,爲什麼我不能從console.log(phsw)獲得相同的結果? – Raevenne 2013-04-21 20:04:10

+0

你怎麼知道result1是一個數組? – JLRishe 2013-04-21 20:12:31

+0

console.log(Object.prototype.toString.call(phsw));或console.log(Array.isArray(phsw));或者用result1 – Xotic750 2013-04-21 20:13:02