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

Pie*_*iet -1 javascript arrays node.js

使用以下代码:

var result = [];
result.push({success : 1});
for (var i = 0; i < rows.length; i++) {
    result.push({email : rows[i].email});
};
Run Code Online (Sandbox Code Playgroud)

我创建一个如下所示的数组:

[
  {
    "success": 1
  },
  {
    "email": "email1@email.com"
  },
  {
    "email": "email2@email.com"
  },
  {
    "email": "emailN@email.com"
  }
]
Run Code Online (Sandbox Code Playgroud)

但我想创建一个如下所示的数组:

[
  {
    "success": 1
  },
  {
    "email": ["email1@email.com","email2@email.com","emailN@email.com"]
  }
]
Run Code Online (Sandbox Code Playgroud)

我坚持这样做的确切语法.如何将数组放在另一个数组中?

Cri*_*sty 5

email结果中的属性包含Array,所以创建一个吧.

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});
Run Code Online (Sandbox Code Playgroud)


rob*_*lep 5

var result = [
  { success : 1 },
  { email   : rows.map(function(row) {
      return row.email;
    })
  }
];
Run Code Online (Sandbox Code Playgroud)

一些解释:rows是一个数组,JS中的数组有一个方法.map(),可用于处理数组中的每个项目并返回一个包含已处理值的新数组.

对于每个项目,使用项目的值调用函数,并且从该函数返回的任何值都将添加到新数组中.

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

编辑:我最初的建议是改造result一个对象:

var result = {
  success : 1,
  email   : rows.map(function(row) {
    return row.email;
  })
};
Run Code Online (Sandbox Code Playgroud)

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