【问题标题】:assign object in array javascript在数组javascript中分配对象
【发布时间】:2014-05-16 05:35:21
【问题描述】:

我正在尝试在数组中分配对象。例如:

var catties = [];

for (var i=0; i<5; i++){
  catties[i].name = "cat" + i;
}

var Str = "";

for (var j=0; j<catties.length; j++){
  Str = Str + catties[j].name + "\n";
}
alert(Str); 

所以,我希望输出如下: 猫1 猫2 三类 等等

谢谢!

【问题讨论】:

  • 这里有什么问题?
  • 这样写代码会报错
  • 如果您发布错误,人们通常会更快地帮助您。

标签: javascript arrays object assign


【解决方案1】:
var catties = [];

for (var i=0; i<5; i++){
  var temp={};
  temp.name = "cat" + i;
  catties.push(temp);
}

var Str = "";

for (var j=0; j<catties.length; j++){
  Str = Str + catties[j].name + "\n";
}
alert(Str); 

【讨论】:

    【解决方案2】:

    问题出在这块:

      for (var i=0; i<5; i++){
        catties[i].name = "cat" + i;
      }
    

    您正在为尚不存在的数组索引分配值。

    for (var i=0; i<5; i++){
      var cat = { name: "cat" + i };
      catties.push(cat);
    }
    

    for (var i=0; i<5; i++){
      var cat = { name: "cat" + i };
      catties[i] = cat;
    }
    

    这会将“cat”变量附加到数组的末尾。

    【讨论】:

    • 不是.name 没有定义(没关系,我们分配给它),而是catties[i]。你不需要使用push btw,分配给catties[i] 也可以。
    • 你是对的;今天在Java和JS之间切换太多了。修复。
    【解决方案3】:

    DEMO

    如果你想在数组中push对象,你需要先构造一个对象,然后才能push它。

    根据您的代码,您只推送了值。

    所以用这个:

    var catties = [];
    
    for (var i=0; i<5; i++){
      var tempObject = {};
      tempObject.name = "cat" + i;
      catties.push(tempObject);
    }
    
    var Str = "";
    
    for (var j=0; j<catties.length; j++){
      Str = Str + catties[j].name + "\n";
    }
    alert(Str); 
    

    【讨论】:

      【解决方案4】:

      这是一个可以满足您需求的 Fiddle。 “名称”对象未定义:

      http://jsfiddle.net/DianaNassar/94tVw/

      var catties = [];
      
      for (var i=0; i<5; i++){
          catties.push({'name': 'cat' + i});
      }
      
      var Str = "";
      
      for (var j=0; j<catties.length; j++){
        Str = Str + catties[j].name + "\n";
      }
      alert(Str); 
      

      【讨论】:

        猜你喜欢
        • 2019-06-16
        • 2018-11-29
        • 1970-01-01
        • 2013-12-31
        • 2020-05-20
        • 2019-08-07
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多