Javascript 在数组中循环时获取索引而不是实际值

Javascript 在数组中循环时获取索引而不是实际值,javascript,Javascript,我正在使用这个代码 var stuff = "mango,tango,snake"; for (thing in stuff.split(",")) console.log(thing); 我在等三行字。我得到了三行索引。我已经检查了toString等方法。没人帮忙 为什么? 我应该用什么来代替 这是正常的行为。要记录值,请使用 var arr = stuff.split(","); for (var thing in arr) console.log(arr[thing]); 见(

我正在使用这个代码

var stuff = "mango,tango,snake";
for (thing in stuff.split(","))
  console.log(thing);
我在等三行字。我得到了三行索引。我已经检查了toString等方法。没人帮忙

  • 为什么?
  • 我应该用什么来代替

  • 这是正常的行为。要记录值,请使用

    var arr = stuff.split(",");
    for (var thing in arr)
      console.log(arr[thing]);
    
    见(我的重点):

    每次迭代时,都会为变量指定不同的属性名

    Javascript数组也是一个对象,它也继承自
    Object
    。但该数组也继承了
    Array.prototype
    ,并获得了一些特殊的方法和行为

    但毕竟,它只是一个物体,这意味着它的结构看起来像

    {
        0:   'mango',
        1:   'tango',
        2:   'snake'
    }
    
    如果您现在在该对象上使用
    for..in
    循环,我们只会得到您描述的结果(这是我们应该期望的)。对象的键,只是索引值,我们只是在对象键上循环,对吗

    为了获得键后面的实际值,我们访问整个对象,如

    objectName[ key ]
    
    我应该用什么来代替

    您可以使用ECMAScript 5的功能来满足您的需要

    var stuff = "mango,tango,snake";
    stuff.split(",").forEach(function(thing){ alert(thing); });
    

    在阵列中循环的标准方法是使用:

    var stuffArray=stuff.split(",");
    for (var i=0, stuffLength=stuffArray.length;i<stuffLength;i++) {
        // here you can retrieve the value stuffArray[i]
    }
    
    var stuffArray=stuff.split(“,”);
    对于(var i=0,stuffLength=stuffArray.length;i