【发布时间】:2020-11-14 05:34:25
【问题描述】:
var getJSON = require('get-json')
var dateToday = new Date();
var dayToday = dateToday.getDate();
var monthToday = dateToday.getMonth() + 1;
var yearToday = dateToday.getFullYear();
const date = yearToday + "-" + monthToday + "-" + dayToday;
getJSON('https://betwatch.fr/getMoney?choice=Match%20Odds&date=' + date)
.then(function (response) {
getJSON('https://betwatch.fr/getMoney?choice=Over%2FUnder%202.5%20Goals&date=' + date)
.then(function (response2) {
getJSON('https://betwatch.fr/getMoney?choice=Both%20teams%20to%20Score%3F&date=' + date)
.then(function (response3) {
const IsEmptyArray = arr => !(typeof (arr) === 'object' && arr instanceof Array && arr.length > 0);
const getFieldMap = (arr, field) => {
arr = (!IsEmptyArray(arr)) ? arr : [];
const result = arr.reduce((result, elm) => {
const key = elm[field];
if (key) {
result[key] = elm;
}
return result;
}, {});
return result;
};
var array1 = JSON.parse(response);
var array2 = JSON.parse(response2);
var array3 = JSON.parse(response3);
const arr1Map = getFieldMap(array1, 'm');
const arr2Map = getFieldMap(array2, 'm');
const arr3Map = getFieldMap(array3, 'm');
const maxArr = (array1.length > array2.length) ? ((array1.length > array3.length) ? array1 : array2) : ((array2.length > array3.length) ? array2 : array3);
delete array1;
delete array2;
delete array3;
const matchingObjects = maxArr.reduce((matchingObjects, ele) => {
key = ele.m;
if (arr1Map[key] && arr2Map[key] && arr3Map[key]) {
ele['n_arr'] = [arr1Map[key]['i'], arr2Map[key]['i'], arr3Map[key]['i']]
ele['n_arr_vm'] = [arr1Map[key]['vm'], arr2Map[key]['vm'], arr3Map[key]['vm']]
matchingObjects.push(ele);
}
return matchingObjects;
}, [])
console.log(matchingObjects);
}).catch(function (error) {
console.log(error);
});
}).catch(function (error) {
console.log(error);
});
}).catch(function (error) {
console.log(error);
});
鉴于这 3 个数组(GOT FROM API),我想检查数组 2 和数组 3 中的 'm'。
如果 'm' 在所有三个中都存在,则返回匹配的对象。
我尝试使用循环执行此操作,但我只能获得位置匹配。
示例:FIRST ARRAY 'm' = 尤文图斯 - 罗马出现在所有三个阵列中。
我想从其他两个中派生对象 'i' 始终与示例匹配相对应。
【问题讨论】:
-
为什么不
"Taraji Wadi Al-Nes - Jabal Al Mukaber"?请添加您的代码。 -
我添加了。从 API 我得到 JSON。如果我与 FOR 循环比较,它只比较位置。
标签: javascript node.js arrays