2013-04-21 89 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