Javascript 返回对象数组

Javascript return array of objects

本文关键字:数组 对象 返回 Javascript      更新时间:2023-09-26
function setup() {
  var names = [];
  var name = {firstname: "", lastname: ""};
  name.firstname = "John";
  name.lastname = "Doe";
  names.push(name);
  name.firstname = "Bill";
  name.lastname = "Smith";
  names.push(name);
  return names;
}
var temp = setup();
print temp[0].firstname;

我似乎无法弄清楚如何从函数返回对象数组。知道我哪里出错了吗?

问题是存储在temp中的结果如下:

 [
   {
     firstname: "Bill",
     lastname: "Smith"
   },
   {
     firstname: "Bill",
     lastname: "Smith"
   }
 ]

您不能重用 name 来推送"第二个"对象,因为您尚未创建第二个对象,它是同一个对象。 所以name.firstname="Bill"正在更改第一个对象,而不是创建第二个对象。

function setup() {
  var names = [];
  var name = {};
  name.firstname = "John";
  name.lastname = "Doe";
  names.push(name);
  var name2 = {};
  name2.firstname = "Bill";
  name2.lastname = "Smith";
  names.push(name2);
  return names;
}
var temp = setup();
alert(temp[0].firstname); // Alerts "John"

你的代码有 2 个问题。

  1. 要在控制台中绘制,您需要使用console.log(temp[0].firstname)代替print

  2. 您有一个名称对象,并且仅对其进行更新。当对象通过引用传递时,索引 0 和索引 1 处的实例都会更新并具有相同的值。

您需要将代码更新为以下内容

function setup() {
      var names = [];
      var n1 = {};
    
      n1.firstname = "John";
      n1.lastname = "Doe";
      names.push(n1);
    
      var n2 = {};
      n2.firstname = "Bill";
      n2.lastname = "Smith";
      names.push(n2);
    
      return names;
    }
    
    var temp = setup();
    console.log(temp[0].firstname);