如何使用sailsjs-nodejs连接/合并两个json对象

How to join/merge two json objects using sailsjs-nodejs

本文关键字:两个 json 对象 sailsjs-nodejs 何使用 连接 合并      更新时间:2023-09-26

你好,我是 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"
  }
]

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

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);

检查这个例子。

使用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>