繁体   English   中英

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

[英]How can I create a nested array in JavaScript?

使用以下代码:

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属性包含一个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});
var result = [
  { success : 1 },
  { email   : rows.map(function(row) {
      return row.email;
    })
  }
];

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

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

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

编辑 :我最初的建议是使result成为对象:

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

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

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

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 finalResult = [];    
finalResult.push({success : 1});
var result = [];
for (var i = 0; i < rows.length; i++) {
    result.push(email : rows[i].email);
};

finalResult.push({"email" : result});

我认为上面的代码会工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM