我如何通过一个序列中的所有输入,使用JavaScript?


当前回答

可能為(i = 0; i < array.length; i++) loop 不是最好的選擇. 為什麼? 如果你有這個:

var array = new Array();
array[1] = "Hello";
array[7] = "World";
array[11] = "!";

方法将从序列(0)到序列(2). 首先,这将是你甚至没有的参考变量,第二,你不会有序列中的变量,第三,这将使代码泡沫。

for(var i in array){
    var el = array[i];
    //If you want 'i' to be INT just put parseInt(i)
    //Do something with el
}

如果你想要它成为一个功能,你可以这样做:

function foreach(array, call){
    for(var i in array){
        call(array[i]);
    }
}

如果你想打破,更有逻辑:

function foreach(array, call){
    for(var i in array){
        if(call(array[i]) == false){
            break;
        }
    }
}

例子:

foreach(array, function(el){
    if(el != "!"){
        console.log(el);
    } else {
        console.log(el+"!!");
    }
});

它回来了:

//Hello
//World
//!!!

其他回答

如果您想保持代码的功能,请使用地图:

theArray.map(instance => do_something);

在这种情况下,您将为未来的操作创建一个新的序列,并将错过任何不需要的副作用。

一个 forEach 实施(见 jsFiddle):

function forEach(list,callback) {
  var length = list.length;
  for (var n = 0; n < length; n++) {
    callback.call(list[n]);
  }
}

var myArray = ['hello','world'];

forEach(
  myArray,
  function(){
    alert(this); // do something
  }
);

关于ECMAScript6:

列表 = [0, 1, 2, 3] for (let obj of list) { console.log(obj) }

在哪里避免与内相关的异常,使它像任何其他语言的旋转一样工作,并让它在旋转中相反地连接到函数内。

手臂({})可以被忽略,如果只有一个命令(例如,在上面的例子)。

var 语言 = [“Java”,“JavaScript”,“C#”,“Python”]; var i, len, 文本; for (i = 0, len = languages.length, text = “”; i < len; i++) { 文本 += 语言[i] + “<br>”; } document.getElementById(“例子”)。innerHTML = 文本; <p id="例子"></p>

var text = "; var i = 0; while (i < 10) { text += i + ") something<br>; i++; } document.getElementById("example").innerHTML = text; <p id="example"></p>

功能滑板 - forEach,地图,过滤器,也减少(它们滑板通过功能,但它们是使用的,如果你需要做一些与你的序列,等等。

如果你想通过一系列用箭函数的对象旋转:

let arr = [{name:'john', age:50}, {name:'clark', age:19}, {name:'mohan', age:26}]; arr.forEach((person)=>{ console.log('I am ' + person.name + ' and I am ' + person.age + ' old'); })