【问题标题】:How create single object from Multiple number of objects using javascript or Lodash如何使用 javascript 或 Lodash 从多个对象创建单个对象
【发布时间】:2016-06-20 09:00:34
【问题描述】:

我有一个像这样的对象

var Data= {
  "firstname": {
    "excelcolumnName": "firstName",
    "dbcolumn": "one",
    "testinfo": "basictest"
  },
  "labname": {
    "excelcolumnName": "LabName",
    "dbcolumn": "two",
    "testinfo": "basictest"
  },
  "percentCbd": {
    "excelcolumnName": "Percent CBD",
    "dbcolumn": "three",
    "testinfo": "Final Test"
  }

  "percentgeneral": {
    "excelcolumnName": "Percent General",
    "dbcolumn": "four",
    "testinfo": "Final Test"
  }
}

我想要过滤并创建包含 testinfo:"basictest" 的新对象,单个对象的输出应该是这样的。

{
"one":"basictest",
"two":"basictest"
}

任何人都可以帮助我解决这个问题。

【问题讨论】:

    标签: javascript node.js underscore.js lodash


    【解决方案1】:

    据我了解,您需要一个包含 dbcolumn:testinfo 映射的对象

    Check this JSBin

    var Data2={};
    
    _.map(Data,(obj)=>{
      if(obj.testinfo==='basictest'){
      var newObj={};
      newObj[obj.dbcolumn]=obj.testinfo;
      return _.assign(Data2,newObj);
      }
    });
    console.log(Data2);
    

    map 函数将每个对象“映射”到其他对象。分配合并这些键值对。 newObj[obj.dbcolumn] 行将值从 'dbcolumn:value' 转换为新对象的键。

    【讨论】:

    • 有了 lodash,您可以在数组上使用函数链接 - 不确定它是否适用于像您的数据这样的对象 - 检查此链接 blog.mariusschulz.com/2015/05/14/…
    • 使用链接,您可以完成 _(Data).filter(仅过滤掉基本测试的功能).map(仅获取 dbcolumn:testinfo 映射)
    【解决方案2】:
    Var array = [];
    
    for(var i=0;i<Object.keys(Data).length;i++){
      if(data[i].testinfo === 'basictest'){ 
        array.push(data[i]);
      }
    }
    

    数组将包含testinfo = 'basictest'的所有对象

    【讨论】:

      【解决方案3】:

      试试这个

      const Data = {
        "firstname": {
          "excelcolumnName": "firstName",
          "dbcolumn": "one",
          "testinfo": "basictest"
        },
        "labname": {
          "excelcolumnName": "LabName",
          "dbcolumn": "two",
          "testinfo": "basictest"
        },
        "percentCbd": {
          "excelcolumnName": "Percent CBD",
          "dbcolumn": "three",
          "testinfo": "Final Test"
        },
        "percentgeneral": {
          "excelcolumnName": "Percent General",
          "dbcolumn": "four",
          "testinfo": "Final Test"
        }
      }
      
      const result = {} // contain result
      
      for (var i in Data) {
       const item = Data[i]
       result[item.dbcolumn] = item.testinfo // add a new object item
      }
      
      console.log(result) // print {one: "basictest", two: "basictest", three: "Final Test", four: "Final Test"}
      

      【讨论】:

        猜你喜欢
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-26
        • 2016-10-30
        相关资源
        最近更新 更多