素胚勾勒不出你
2022-12-22 13:12:37
我們如何從 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": "[email protected]" }, { "company": "ABC" }]但我期待的數組是[ { "name": "Tom", "email": "[email protected]", "company": "ABC" }]// or[ "returned": { "name": "Tom", "email": "[email protected]", "company": "ABC" }]arrayToTraverse 的一個例子可以被認為如下 [ { "id": "1", "inputvalue": "Name", "value": "Tom", "type": "Short Text" }, { "id": "2", "inputvalue": "Email", "value": "[email protected]", "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:"[email protected]"},
{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
提交
取消