1

我有 3 个数组,例如:

var arr1 = [];
var arr2 = [];
var arr3 = [];

//When I want to add something into array then I use
arr1.push("text");
arr2.push("text");

但是否可以制作类似以下示例的内容?

//example:
var arr = [];

arr['group1'].push("text1");
arr['group2'].push("text2");
arr['group2'].push("textn");

//and then iterate like:

for(item in arr['group1'])
  console.log(item);

甚至有可能做这样的事情吗?我试过但不起作用。

4

4 回答 4

5

但是有一个基本的误解,arr是一个数组,但您将它用作关联数组,在 JavaScript 中,它最好用 object 表示{}for...in用于对象,而不是数组,MDN 有一个警告说明:

for..in 不应该用于迭代索引顺序很重要的数组...

即使索引很简单,我也会建议使用常规for循环或forEach.

考虑使用以下更合适的方法。

var obj = {
  group1: ['text1'],
  group2: ['text2'],
  group3: ['text3']
};

// pushing more strings
obj.group1.push('foo');
obj['group2'].push('baz');
于 2012-09-19T03:12:55.140 回答
3

您将arr['group1']其视为数组(通过使用.push()),但您尚未将其声明为数组。

var arr = [];

arr['group1'] = [];
arr['group2'] = [];
arr['group3'] = [];

arr['group1'].push("text1");
arr['group2'].push("text2");
arr['group2'].push("textn");
于 2012-09-19T03:07:43.100 回答
2

看来您实际上是在寻找 Javascript 对象而不是数组。
此外,您需要先创建这些对象。

var obj = {group1:[],group2:[],group3:[]};

/* or
var obj = {};
obj.group1 = [];
*/

obj['group1'].push("text1");
// or obj.group1.push("text1");
于 2012-09-19T03:14:04.767 回答
1

for...in结构将您的 for 变量设置为键,而不是值。假设arr['group1']是一个数组,这将正常工作:

//example:
var arr = [];

arr['group1'].push("text1");
arr['group2'].push("text2");
arr['group2'].push("textn");

//and then iterate like:

for(item in arr['group1'])
  console.log(arr['group1'][item]);​
于 2012-09-19T03:05:38.813 回答