【问题标题】:How to join/merge two json objects using sailsjs-nodejs如何使用sailsjs-nodejs 加入/合并两个json对象
【发布时间】:2016-08-06 13:48:59
【问题描述】:

您好,我是 Sailsjs-Nodejs 的新手。在我的控制器中,我有两个 JSON 对象需要合并/加入,以便第三个发送响应

res.send(obj1) 输出

[
  {
    total_fare: "376",
    arrival_to: "ABV"
  },
  {
    total_fare: "312",
    arrival_to: "ACC"
  },
  {
    total_fare: "432",
    arrival_to: "BFN"
  }
]

res.send(obj2) 输出

[
  {
    url: "nigeria.php",
    country: "Nigeria",
    city_code: "ABV"
  },
  {
    url: "ghana.php",
    country: "Ghana",
    city_code: "ACC"
  },
  {
    url: "south-africa.php",
    country: "South Africa",
    city_code: "BFN"
  }
]

这是我的预期结果 res.send(obj3) 应该输出

[
  {
    url: "nigeria.php",
    country: "Nigeria",
    city_code: "ABV",
    total_fare: "376",
    arrival_to: "ABV"
  },
  {
    url: "ghana.php",
    country: "Ghana",
    city_code: "ACC",
    total_fare: "312",
    arrival_to: "ACC"
  },
  {
    url: "south-africa.php",
    country: "South Africa",
    city_code: "BFN",
    total_fare: "432",
    arrival_to: "BFN"
  }
]

【问题讨论】:

    标签: javascript json node.js express sails.js


    【解决方案1】:

    你可以在不修改源数组的情况下执行以下操作;

    var arr = [{total_fare: "376",arrival_to: "ABV"},
               {total_fare: "312",arrival_to: "ACC"},
               {total_fare: "432",arrival_to: "BFN"}],
        brr = [{url: "nigeria.php",country: "Nigeria",city_code: "ABV"},
               {url: "ghana.php",country: "Ghana",city_code: "ACC"},
               {url: "south-africa.php",country: "South Africa",city_code: "BFN"}],
     merged = arr.map((o,i) => Object.assign({},o,brr[i]));
     console.log(merged);

    【讨论】:

      【解决方案2】:

      检查这个例子。

      使用lodash 包我使用_.map() 来浏览总票价, 并使用_.find() 我发现arrival_to == city_code 的第一次出现并做_.extend() 加入对象。


      当您的对象数组不连续并且总票价多于国家/地区列表中的元素时,此示例很有帮助。

      我特别添加了{total_fare: "111",arrival_to: "ACC"} 来向您展示以及当有 2 个或更多对象具有相同的 arrival_to 字段时的示例。

      // const _ = require('lodash'); //uncomment on serverside usage
      
      let totalFares = [{total_fare: "376",arrival_to: "ABV"},
                 {total_fare: "312",arrival_to: "ACC"},
                 {total_fare: "432",arrival_to: "BFN"},
                 {total_fare: "111",arrival_to: "ACC"}];
      
      let countries = 
                 [{url: "nigeria.php",country: "Nigeria",city_code: "ABV"},
                 {url: "ghana.php",country: "Ghana",city_code: "ACC"},
                 {url: "south-africa.php",country: "South Africa",city_code: "BFN"}];
      
      totalFares = _.map(totalFares, (totalFare) => {
          _.extend(totalFare, _.find(countries, 
                                    (country) => 
                                     country.city_code == totalFare.arrival_to));
      
          return totalFare;
      });
      
      console.log(totalFares);
      <script src="https://raw.githubusercontent.com/lodash/lodash/4.14.1/dist/lodash.js"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 2018-01-14
        • 2021-01-24
        相关资源
        最近更新 更多