如何在JavaScript中创建嵌套数组?

如何在JavaScript中创建嵌套数组?,javascript,arrays,node.js,Javascript,Arrays,Node.js,代码如下: var result = []; result.push({success : 1}); for (var i = 0; i < rows.length; i++) { result.push({email : rows[i].email}); }; 但我想创建一个如下所示的数组: [ { "success": 1 }, { "email": "email1@email.com" }, { "email": "email2@

代码如下:

var result = [];
result.push({success : 1});
for (var i = 0; i < rows.length; i++) {
    result.push({email : rows[i].email});
};
但我想创建一个如下所示的数组:

[
  {
    "success": 1
  },
  {
    "email": "email1@email.com"
  },
  {
    "email": "email2@email.com"
  },
  {
    "email": "emailN@email.com"
  }
]
[
  {
    "success": 1
  },
  {
    "email": ["email1@email.com","email2@email.com","emailN@email.com"]
  }
]

我无法理解这样做的确切语法。如何将数组放入另一个数组中?

结果中的
email
属性包含一个
数组
,因此请为其创建一个数组

var result = [];
var emails = [];

for (var i = 0; i < rows.length; i++) {
   emails.push(rows[i].email);
};

result.push({success : 1});
result.push({email: emails});
var结果=[];
var=[];
对于(变量i=0;i
var finalResult=[];
finalResult.push({success:1});
var结果=[];
对于(变量i=0;i

我认为上面的代码可以工作。

只需在
结果
对象中使用属性
电子邮件
创建一个数组,然后将电子邮件推入其中。见下文

var result = [];
result.push({success : 1});
var emails = []
for (var i = 0; i < rows.length; i++) {
    emails.push(rows[i].email);
};
result.push({email: emails})
var结果=[];
result.push({success:1});
var电子邮件=[]
对于(变量i=0;i
一些解释:
是一个数组,JS中的数组有一个方法,可以用来处理数组中的每个项,并返回一个带有处理值的新数组

对于每个项,使用项的值调用一个函数,从该函数返回的值将添加到新数组中

在本例中,该函数返回每个项目的
email
属性,因此您最终得到一个电子邮件地址数组,这基本上就是您想要的

编辑:我最初的建议是将
结果
改为对象:

var result = {
  success : 1,
  email   : rows.map(function(row) {
    return row.email;
  })
};

这是否更好取决于对数据结构的要求。

另外,您并不是在创建“JSONArray”。您正在创建一个JavaScript数组,该数组在输出到控制台时被序列化为JSON。
result
是一个
array
,您不能在JavaScript中为数组指定索引。(例如:
result.email
)@Cristy如果可以的话,这通常被认为是一种不好的做法,因为你无法使用普通的数组方法获得它。“但我相信这就是你的意思。”克里斯蒂,接得好。那完全是我的疏忽。我已经更新了我的答案。很好且干净的解决方案,需要注意的一点是,
结果
将是一个
对象
,而不是像他的示例中那样的
数组。我想你也应该留下你的初始解决方案,还提到对结果使用
对象
而不是
数组
将使一切变得更干净、更容易处理:)@Cristy我不认为我比OP更了解数据的结构(只是它应该如何创建)@robertklep请使用初始解决方案编辑您的解决方案,以便更好地理解,谢谢
var result = [
  { success : 1 },
  { email   : rows.map(function(row) {
      return row.email;
    })
  }
];
var result = {
  success : 1,
  email   : rows.map(function(row) {
    return row.email;
  })
};