繁体   English   中英

如何从JavaScript中的数组元素创建对象

[英]How to create an object from the elements of an array in JavaScript

我有一个数组中的电子邮件列表:

["gomand@gmail.com", "terry@yahoo.com", "123Yu@gmail.com"]

我如何遍历数组并将每封电子邮件作为其自身属性推送到一个对象中:该对象看起来像:

{
email1: "gomand@gmail.com",
email2: "terry@yahoo.com",
email3: "123Yu@gmail.com"
}

一线

var object = ['gomand@gmail.com', 'terry@yahoo.com', '123Yu@gmail.com'].reduce((r, e, i) => (r['email'+(i+1)] = e, r), {});

 var inputArr = ['gomand@gmail.com', 'terry@yahoo.com', '123Yu@gmail.com']; var outputObj = {}; var i; for (i=0; i<inputArr.length; i++) { outputObj['email'+i] = inputArr[i]; } console.log(outputObj); 

应该这样做:

 var arr = ["gomand@gmail.com", "terry@yahoo.com", "123Yu@gmail.com"]; var emails = {}; arr.forEach((e, i) => emails["email" + (i+1)] = e); console.log(emails); 

您可以使用Array#reduce轻松完成此操作:

 var emails = ['gomand@gmail.com', 'terry@yahoo.com', '123Yu@gmail.com'] var result = emails.reduce(function (o, e, i) { o['email' + ++i] = e return o }, {}) console.log(result) 

你可以试试这个

var ary = [];

function pushToAry(name, val) {
   var obj = {};
   obj[name] = val;
   ary.push(obj);
}

pushToAry("myName", "myVal"); // Here it is for single value u can loop with your array. 
  • 救命

这就是Array.prototype.reduce用于的目的

 const emails = ['gomand@gmail.com', 'terry@yahoo.com', '123Yu@gmail.com'] console.info(emails.reduce((map, email, idx) => Object.assign(map, { ['email' + (idx + 1)]: email }), Object.create(null))) 

这是另一种解决方案

 var emails = ["gomand@gmail.com", "terry@yahoo.com", "123Yu@gmail.com"]; var object = {}; emails.forEach(function(value, key){ object["email" + (key+1)] = value; }); console.log(object); 

obj = {};
for(i=0;i<yourArray.length;i++){
propName = 'email' + i;
obj[propName] = yourArray[i];
}

我相信这应该可行。

请在下面找到更新的代码

 var array=["gomand@gmail.com", "terry@yahoo.com", "123Yu@gmail.com"]; var obj = { }; for (var prop in array) { obj["email"+(prop+1)] = array[prop]; } console.log(obj); 

暂无
暂无

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

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