我们如何从 map 函数内部将值推送到对象并返回该单个对象。我在 map 函数中有字符串比较条件。我尝试使用Object.assign但它返回一个数组,该数组中包含多个对象。我期望数组中有一个对象,而不是这个多个对象。地图功能let arrayObj = arrayToTraverse.map(function(item) { var myObj = {}; if(item.inputvalue === 'Name'){ Object.assign(myObj, {name: item.value}); } else if (item.inputvalue === 'Email'){ Object.assign(organizerInfo, {email: item.value}); } else if (item.inputvalue === 'Company'){ Object.assign(organizerInfo, {company: item.value}); } return myObj;});console.log("The array object is", arrayObj)这将返回对象数组,如下所示[ { "name": "Tom" }, { "email": "tom@abc.com" }, { "company": "ABC" }]但我期待的数组是[ { "name": "Tom", "email": "tom@abc.com", "company": "ABC" }]// or[ "returned": { "name": "Tom", "email": "tom@abc.com", "company": "ABC" }]arrayToTraverse 的一个例子可以被认为如下 [ { "id": "1", "inputvalue": "Name", "value": "Tom", "type": "Short Text" }, { "id": "2", "inputvalue": "Email", "value": "tom@abc.com", "type": "Email ID" }, { "id": "3", "inputvalue": "Company", "value": "Google", "type": "Long Text" } ]
1 回答
弑天下
TA贡献1818条经验 获得超8个赞
简而言之,您正在尝试将reduce
一个数组映射到单个对象,而不是将map
一个数组映射到另一个对象。
var arrayToTraverse = [
{inputvalue:"Name",value:"Tom"},
{inputvalue:"Email",value:"tom@abc.com"},
{inputvalue:"Company",value:"ABC"},
{inputvalue:"Foo",value:"Bar"} // wont show up
];
var valuesRequired = ["Name","Email","Company"];
var result = arrayToTraverse.reduce( (acc, item) => {
if(valuesRequired.includes(item.inputvalue))
acc[item.inputvalue.toLowerCase()] = item.value;
return acc;
}, {});
console.log(result);
编辑:为必填字段添加查找数组。
添加回答
举报
0/150
提交
取消