我有一個簡單陣列等:遍歷陣列,與打印字符串
var myArr=["one","two","three"];
一個我有一個計數循環,其由一個增加VAR i
的值。
我想要做的就是從數組每次打印的下一個值循環運行時,旁邊的一個文本字符串,像這樣:
alert('value number '+myArr[i]+);
但出於某種原因,我不能得到這個工作。 下面的代碼工作,所以我假設我不是調用計數器權:
alert('value number '+myArr[0]+);
我有一個簡單陣列等:遍歷陣列,與打印字符串
var myArr=["one","two","three"];
一個我有一個計數循環,其由一個增加VAR i
的值。
我想要做的就是從數組每次打印的下一個值循環運行時,旁邊的一個文本字符串,像這樣:
alert('value number '+myArr[i]+);
但出於某種原因,我不能得到這個工作。 下面的代碼工作,所以我假設我不是調用計數器權:
alert('value number '+myArr[0]+);
確保你正確地遞增循環計數器(它應該在零啓動和運行,直至指數最高在數組中),並且在alert
行末尾的流浪+
被刪除。
for (var i = 0; i < myArr.length; ++i) {
alert('value at index [' + i + '] is: [' + myArr[i] + ']');
}
我得到:「在索引[3]價值是:[undefined]」 – 2010-05-23 18:52:08
爲(** var ** i = 0 – 2010-05-23 19:24:17
已在我的情況下var)仍未定義... :( – 2010-05-23 19:37:53
for (i = 0; i < miArray.length; i++){
alert('value number ' + myArr[i]);
}
通過 '未來價值',你的意思是當前索引+ 1的值?
for (var i=0; i < myArr.length; i++){
console.log(myArr[i]); // value of current index
if (i !== myArr.length - 1) { // if on last index then there is no next value
console.log(myArr[i + 1]); // value of next index
}
}
嗯 - 這段代碼實際上並沒有做任何事情,所以優化的Javascript引擎將完全刪除它。 – 2010-05-23 17:07:31
myArr [i];是一個完全有效的表達式,但正如你所說 - 一個好的引擎可能會優化它遠離:) – 2010-05-23 17:21:26
你在想一個迭代器嗎?這是即將推出的標準,但它只支持JavaScript 1.7+,而目前只支持Firefox,並且您必須使用<script type="application/javascript;version=1.7">
... Chrome將聲稱支持JavaScript 1.7,但它會實際上不支持任何東西[別問我爲什麼他們這樣做]
只是爲了證明這點:
function yourIterator(arrayToGoThrough)
{
for(var i = 0; i < arrayToGoThrough.length; i++)
{
yield arrayToGoThrough[i];
}
}
var it = new yourIterator(["lol", "blargh", "dog"]);
it.next(); //"lol"
it.next(); //"blargh"
it.next(); //"dog"
it.next(); //StopIteration is thrown
注意,那就是新的標準,你可能不希望使用它=)。 ..
你也可以「模擬」像這樣的迭代器:
function myIterator(arrayToGoThrough){
this.i = 0;
this.next = function(){
if(i == arrayToGoThrough.length) //we are done iterating
throw { toString: function(){ return "StopIteration"; } };
else
return arrayToGoThrough[i++];
}
}
如果您想使用當前的標準,你可以只通過你的陣列迭代
for(var i = 0; i < yourArr.length; i++) alert("yourArr["+i+"]: "+yourArr[i]);
這種* JavaScript(TM)*特性,如yield,不是[ECMAScript]的一部分(http://www.ecma-international.org/publications/standards/Ecma-262。 htm)標準,它們僅適用於* Mozilla實現*(SpiderMonkey,Rhino)。國際海事組織,其他引擎,如V8(Chrome),JavaScripCore(WebKit)等...將永遠不會支持這些非標準功能。 – CMS 2010-05-23 20:19:50
相反的遍歷,使用內置函數:
function myFunction() {
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.valueOf();
alert(x);
}
下面的代碼將工作用箭頭功能。簡單並減小了代碼
var myArr=["one","two","three"];
myArr.map((elements) => alert('value number' + " " + elements));
只有當循環的唯一目的是遞增計數器時,這纔有效且有意義。所提到的循環可以用於對數組中的項目進行額外的工作。 – 2017-09-27 11:43:21
你的第二個選項alert('value number '+myArr[0]+);
,因爲你在這種情況下工作定義數組索引0相似,但myArr,該[I]不工作,因爲我沒有,如果分配I = 0,則第一個值的工作定義的話,但主要的解決方案是使用循環和增量計數器,並獲得總數組使用myArr.length,否則哪些時間循環運行你不知道。
for (var i = 0; i < myArr.length; ++i) {
alert('Array value at index [' + i + '] : [' + myArr[i] + ']');
}
瞭解更多信息
能否請您發表您的代碼,這將有助於我們更好地理解它。 – 2010-05-23 16:56:13