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

我们如何从 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"

    }

  ]


素胚勾勒不出你
浏览 92回答 1
1回答

弑天下

简而言之,您正在尝试将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);编辑:为必填字段添加查找数组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript