为了账号安全,请及时绑定邮箱和手机立即绑定

满足条件时如何从映射函数内部将值推送到对象?

满足条件时如何从映射函数内部将值推送到对象?

素胚勾勒不出你 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": "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);

编辑:为必填字段添加查找数组。



查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信