不起作用的对象数组

时间:2017-07-21 12:35:26

标签: javascript arrays object

var array = [{}];

var obj = {
    name: "Fred X",
    age: 20
}

function x() {
    array[1].name = "Alice";
    array[1].age = 48;
}

array[0] = obj;
document.write(array[0].name + "=" + array[0].age, "<br>");
array[1] = obj;
x();
document.write(array[0].name, "=", array[0].age < br > ",array[1].name,"=",array[1].age);

我正在尝试使用一系列项目(具有属性的对象)构建购物车,但它无法正常工作。上面的代码说明了问题:当我尝试读出购物车时,所有商品都显示为最后添加的商品。 我没有到这里来的是什么? 提前谢谢......

3 个答案:

答案 0 :(得分:0)

您应该检查@Satpal's link,因为它说明了您遇到的问题:参考问题。

当您创建变量时,请说obj,每当您更改它的值时,无论您在何处使用它,都会发生变化。

尝试使用功能在购物车中添加内容:

function addItemToCart(name, age) {
    array.push({ 
        name: name,
        age: age
    });
}

addItemToCart("Alice", 48);

array.forEach(cartItem => {
    document.write(cartItem .name + "=" + cartItem .age, "<br>");
});

您的代码将比您的代码更好用。

另外,你的最后一行有一个拼写错误。

答案 1 :(得分:0)

您好我已更新您的代码, 你最后一行内有额外的, 我已经更新了你的代码, 请在下面查看,

var array = [{}];
  var obj={
  name:"Fred X",
  age:20
  }
  function x(){
  array[1].name = "Alice";
  array[1].age = 48;
  }

  array[0]=obj;
  document.write(array[0].name+"="+array[0].age,"<br>");
  array[1]=obj;
  x();
  document.write(array[0].name,"=",array[0].age,"<br>",array[1].name+"="+array[1].age);

此处还有您的代码的{samle屏幕截图Screenshot

还有一个工作的代码笔,用于澄清

https://codepen.io/shohil06/pen/ZJzEJj

希望它有所帮助,

谢谢

答案 2 :(得分:0)

var array = [{}];

var obj = {
    name: "Fred X",
    age: 20
}

function x() {
    array[1].name = "Alice";
    array[1].age = 48;
}

array[0] = obj;
console.log(array[0].name + "=" + array[0].age, "\n");
array[1] = obj;
x();
console.log(array[0].name,"=",array[0].age,"\n",array[1].name+"="+array[1].age);

检查一下。