Как сравнить массив с данными JSON в JavaScript и показать сопоставленный результат JSON в другом массиве - PullRequest
0 голосов
/ 26 сентября 2018
    //data1

     Marray:{
            loc:["Btm","Bannegatha road","Whitefield"],
            day: ["Mon","Sun", "Tue"],
            Timing: ["Morning","Evening"]
     };  

// Данные JSON, это мои данные JSON для сравнения

        data:
        [{
                        "id_product": "1",
                        "product_name": "Swimming",
                        "id_facility": "16",
                        "facility_name": "Atom Sports Arena",
                        "filter_entity": "{\"timings\":[\"Morning\",\"Afternoon\",\"Evening\"],\"open_days\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],}",
                        "location_name": "Bannerghatta Road"
                    },
                    {
                        "id_product": "2",
                        "product_name": "Badminton",
                        "id_facility": "20",
                        "facility_name": "Sports Alley",
                        "filter_entity": "{\"timings\":[\"Morning\",\"Afternoon\",\"Evening\"],\"open_days\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sun\",\"Sat\"],}",
                        "location_name": "Bannerghatta Road"
                    },
                    {
                        "id_product": "3",
                        "product_name": "Intermediate Level Football",
                        "id_facility": "16",
                        "facility_name": "Atom Sports Arena",
                        "filter_entity": "{\"timings\":[\"Evening\"],\"open_days\":[\"Tue\",\"Mon\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],}",
                        "location_name": "Whitefield"
                    },
                    {
                        "id_product": "4",
                        "product_name": "Bharatnatyam",
                        "id_facility": "22",
                        "facility_name": "Natyalaya",
                        "filter_entity": "{\"timings\":[\"Evening\"],\"open_days\":[\"Mon\",\"Wed\",\"Fri\",\"Sat\",\"Sun\"],}",
                        "location_name": "BTM"
                    },
                    {
                        "id_product": "5",
                        "product_name": "Basket Ball",
                        "id_facility": "17",
                        "facility_name": "DHI Sports Center",
                        "filter_entity": "{\"timings\":[\"Morning\",\"Evening\"],\"open_days\":[\"Mon\",\"Wed\",\"Fri\"],}",
                        "location_name": "Whitefield"

                    }
                ]

Конечный результат, который мне нужен, - это разница между этими массивами - конечный результат должен выглядеть следующим образом:

data: [
  {
    "id_product": "1",
    "product_name": "Swimming",
    "id_facility": "16",
    "facility_name": "Atom Sports Arena",
    "filter_entity": "{\"timings\":[\"Morning\",\"Afternoon\",\"Evening\"],\"open_days\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],}",
    "location_name": "Bannerghatta Road"
  },
  {
    "id_product": "2",
    "product_name": "Badminton",
    "id_facility": "20",
    "facility_name": "Sports Alley",
    "filter_entity": "{\"timings\":[\"Morning\",\"Afternoon\",\"Evening\"],\"open_days\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sun\",\"Sat\"],}",
    "location_name": "Bannerghatta Road"
  },
  {
    "id_product": "3",
    "product_name": "Intermediate Level Football",
    "id_facility": "16",
    "facility_name": "Atom Sports Arena",
    "filter_entity": "{\"timings\":[\"Evening\"],\"open_days\":[\"Tue\",\"Mon\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],}",
    "location_name": "Whitefield"
  },
  {
    "id_product": "4",
    "product_name": "Bharatnatyam",
    "id_facility": "22",
    "facility_name": "Natyalaya",
    "filter_entity": "{\"timings\":[\"Evening\"],\"open_days\":[\"Mon\",\"Wed\",\"Fri\",\"Sat\",\"Sun\"],}",
    "location_name": "BTM"
  },
  {
    "id_product": "5",
    "product_name": "Basket Ball",
    "id_facility": "17",
    "facility_name": "DHI Sports Center",
    "filter_entity": "{\"timings\":[\"Morning\",\"Evening\"],\"open_days\":[\"Mon\",\"Wed\",\"Fri\"],}",
    "location_name": "Whitefield"
  }
]

Возможно ли сделать что-то подобное в JavaScript?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы можете попробовать это, и оно должно работать.Можно почистить немного, но я отправляюсь в офис:

let Marray = {
  loc:["Btm","Bannegatha road","Whitefield"],
  day: ["Mon","Sun", "Tue"],
  Timing: ["Morning","Evening"]
};

let data = [{
    "id_product": "1",
    "product_name": "Swimming",
    "id_facility": "16",
    "facility_name": "Atom Sports Arena",
    "filter_entity": {
        "timings":["Morning","Afternoon","Evening"],
        "open_days":["Mon","Tue","Wed","Thu","Fri","Sat"]
    },
    "location_name": "Bannerghatta Road"
},
    {
        "id_product": "2",
        "product_name": "Badminton",
        "id_facility": "20",
        "facility_name": "Sports Alley",
        "filter_entity": {
            "timings":["Morning","Afternoon","Evening"],
            "open_days":["Mon","Tue","Wed","Thu","Fri","Sun","Sat"],
        },
        "location_name": "Bannerghatta Road"
    },
    {
        "id_product": "3",
        "product_name": "Intermediate Level Football",
        "id_facility": "16",
        "facility_name": "Atom Sports Arena",
        "filter_entity": {
            "timings":["Evening"],
            "open_days":["Tue","Mon","Wed","Thu","Fri","Sat","Sun"],
        },
        "location_name": "Whitefield"
    },
    {
        "id_product": "4",
        "product_name": "Bharatnatyam",
        "id_facility": "22",
        "facility_name": "Natyalaya",
        "filter_entity": {
            "timings":["Evening"],
            "open_days":["Mon","Wed","Fri","Sat","Sun"],
        },
        "location_name": "BTM"
    },
    {
        "id_product": "5",
        "product_name": "Basket Ball",
        "id_facility": "17",
        "facility_name": "DHI Sports Center",
        "filter_entity": {
            "timings":["Morning","Evening"],
            "open_days":["Mon","Wed","Fri"],
        },
        "location_name": "Whitefield"

    }
];

let results = new Set();

const locationResults = data.filter(item => Marray.loc.includes(item.location_name));
const dayResults = data.filter(item => item.filter_entity.open_days.some(r => Marray.day.includes(r)));
const timingResults = data.filter(item => item.filter_entity.timings.some(r => Marray.Timing.includes(r)));

[...locationResults, ...dayResults, ...timingResults].map(function(x) {
  results.add(x);
});

console.log(Array.from(results));

Предварительный просмотр

0 голосов
/ 26 сентября 2018

Я бы просто использовал для этого обычный JavaScript, примерно так:

var jsonMatches = [];
for (var i = 0; i < jsonObject01.length; i++)
    {//start i for
       for (var j = 0; j < jsonObject02.length; j++)
           {//start j for
              if (//start if condition
                  jsonObject01[i].attribute01 == jsonObject02[j].attribute01 &&
                  jsonObject01[i].attribute02 == jsonObject02[j].attribute02 &&
                  jsonObject01[i].attribute03 == jsonObject02[j].attribute03
                 )//end if condition
                  {//start if statement
                      var tempObject = {};
                      tempObject = jsonObject01[i];
                      jsonMatches.push(tempObject);
                  }//end if statement
           }//end j for
    }//end i for
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...