我如何基于相似的字段检查合并两个对象数组数据

问题描述

我有两个包含低值和高值的对象数组,如何通过检查类似日期的相似文件将它们合并,并将它们组合为低值和高值并返回一个数组。

data = {
    low: [
        { date: '2020-09-17',value: '50' },{ date: '2020-09-18',value: '52' },{ date: '2020-09-15',value: '45' },],high: [
        { date: '2020-09-17',value: '70' },value: '75' },value: '80' },};

// Expected Output new array with date sort:
[
    { date: '2020-09-18',value: '52/75' },{ date: '2020-09-17',value: '70/50' },value: '45/80' },];

解决方法

可以通过Array.map()Array.find()如下实现:

data = {
    low: [
        { date: '2020-09-17',value: '50' },{ date: '2020-09-18',value: '52' },{ date: '2020-09-15',value: '45' },],high: [
        { date: '2020-09-17',value: '70' },value: '75' },value: '80' },};

let result = data.low.map(oLow => {
  oLow.value += '/' + data.high.find(oHigh => oHigh.date == oLow.date).value;
  return oLow;
});
result.sort((a,b) => new Date(b.date) - new Date(a.date));

console.log(result);

,

您可以使用mapfindsort

const res = data.low.map(l => ({
  date: l.date,value: `${l.value}/${data.high.find(h => h.date === l.date).value}`
})).sort((a,b) => b.date.localeCompare(a.date))

const data = {
  low: [
      { date: '2020-09-17',high: [
      { date: '2020-09-17',};

const res = data.low.map(l => ({
  date: l.date,b) => b.date.localeCompare(a.date))

console.log(res)
.as-console-wrapper { max-height: 100% !important; }