2012-07-26 76 views
-5

是否可以创建一个对象数组?我想知道这一点,因为我正在开发一个iPad网站,其中有一堆字段需要在iPad上滚动。Javascript/jQuery对象数组?

当然,iPad/Safari必须走并让事情变得困难,而不是使用overflow-x/y选项来允许滚动条。那么,是什么我希望做的是创造iScroll对象的数组,因为有大量的需要被创造的东西,我宁愿不做:

var myScroll = new iScroll(); 
var myScroll = new iScroll(); 

等等

我会希望做的是有某种类似循环:

var arrayOfObjects=new Array(); 
for(var i=0; i < numFields; i++) 
{ 
    var temp = new iScroll(); 
    arrayOfObjects.push(temp); 
} 

那么,这样的事情是可行的?

+1

你试过了吗? – jbabey 2012-07-26 13:11:53

+0

是的,这是可能的,你的代码应该在实现该工作 – Esailija 2012-07-26 13:12:00

回答

2

我想你发布的代码将正常工作。一些吹毛求疵:

var arrayOfObjects = []; // use this syntax instead of "new array" 
for (var i = 0; i < numFields; i++) { 
    arrayOfObjects.push(new iScroll()); // no reason for a temp var 
} 
0

是的,尽可能远离你可以做到这一点。

我通常会说:

var myArray = [] 
var myArray[0] = new iScroll(); 
var myArray[1] = new iScroll(); 
var myArray[2] = new iScroll(); 
var myArray[3] = new iScroll(); 

但是,在一个循环做它应该工作一样:)

+0

你可以说'var myArray = [new iScroll(),new iScroll(),new iScroll(),new iScroll()]' – Esailija 2012-07-26 13:12:49

+0

Yes,good point,just wanted尽管我会更新:) – LmC 2012-07-26 13:13:43

+0

我不认为OP需要这个简化,因为他或她没有我们的帮助提出了一个循环实现的正确语法。 (特别是当你有三个或更多元素时,循环实际上只有更少的代码行......) – nnnnnn 2012-07-26 13:16:24

2

var arrayOfObjects=new Array(); 
for(var i=0; i < 10; i++) 
{ 
    var temp = new Object(); 
    arrayOfObjects.push(temp); 
} 

以上代码生成:对象,对象,对象,...]对于arrayOfObjects

+0

非常棒!我希望它能工作,但我不确定。 – user1470118 2012-07-26 13:17:50

+0

所以这个答案只是重申了OP的代码,但使用Object而不是'iScroll'? – nnnnnn 2012-07-26 13:19:18

+0

测试脚本的好方法是在Chrome中点击Ctrl + Shift + J并将代码粘贴到控制台窗口中。这是一个方便的JS REPL。至少这就是我所做的。 – 2012-07-26 13:19:20

1

你要什么的值,可以通过jQuery.map()这样实现:

var arrayObjects = $.map(Array(numFields), function(){ return new iScroll(); }); 
+1

在这里,我在思考(其他答案中没有足够的jQuery)。 +1,但我之前并没有想过使用'.map()'这种方式。 – nnnnnn 2012-07-26 13:21:42