关于在JavaScript对象中使用数组的问题

时间:2015-03-24 02:19:44

标签: javascript jquery

如果可以将数组传递给像这样的JavaScript对象,请告诉我吗?

var content = {
                item1: "John",
                item2: "Doe",
                item3: { "item3_1", "item3_2", "item3_3"   }
              }

console.log(content);

您能告诉我如何访问或更新这些项目吗?如果没有,请告诉我如何创建数据格式(例如Array of Array)来存储这些数据?

2 个答案:

答案 0 :(得分:2)

在JavaScript对象上定义数组的语法如下所示:

var content = {
  item1: "John",
  item2: "Doe",
  item3: ["item3_1", "item3_2", "item3_3"]
};

你没有"传递"将数组放入对象中,您只需将其中一个属性定义为数组即可。内部的任何嵌套数据都采用与对象或另一个数组相同的形式:

var foo = {
  arr: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
};

要记住的重要一点是你使用' {}'对于对象语法,' []'用于数组语法。您还可以在该数组中包含对象:

var bar = {
  obj_arr: [
      {
        name: "Tim",
        age: 14,
      },
      {
        name: "Bob",
        age: 36
      },
      {
        name: "Sue",
        age: 73
      }
    ]
  };

要从数组属性访问其中一个元素,请使用以下语法:

content.item3[0] for "item3_1"
content.item3[1] for "item3_2"

或者,或者:

content["item3"][0] for "item3_1"
content["item3"][1] for "item3_2"

虽然在提前知道属性名称时这种语法不常见。要遍历该数组中的项目,可以使用for循环:

for (var i = 0, l = content.item3.length; i < l; i += 1) {
    console.log(content.item3[i]);
}

这就是你将console.log项目输出的方法 - 如果你想用它们做其他事情,你需要用该行动代替console.log调用。

这是一个更新的小提琴,可以完成我认为您正在寻找的内容:http://jsfiddle.net/qobo98yr/5/

这是将内容对象中的所有内容打印到控制台的代码:

var outputString = "";
for (var prop in content) {
  outputString += (content[prop] + " ");
}
console.log(outputString);

答案 1 :(得分:0)

您的内容变量是包含以下内容的对象:

item1: String
item2: String
item3: array

var content = {
  item1: "John",
  item2: "Doe",
  item3: { "item3_1", "item3_2", "item3_3"   }
}

如果item3是一个数组,那么应该使用数组符号

var content = {
  item1: "John",
  item2: "Doe",
  item3: ["item3_1", "item3_2", "item3_3"]
}

现在你可以传递这个对象并调用它的字段:

function print(obj) {
  var fname = obj.item1;
  var lname = obj.item2;
  var array = obj.item3;
  alert(array.toString());
}

对函数的调用看起来像

print(content);