Сравните 2 разных массива по идентификатору и рассчитайте разницу - PullRequest
0 голосов
/ 30 апреля 2020

Я получил 2 массива

ArrayA = {"data":{"PlayerList":[{"Platform":1,"PlayerExternalId":205288,"Price":250,"RemainingTime":22},{"Platform":1,"PlayerExternalId":205753,"Price":10000,"RemainingTime":22}]}}

ArrayB = {"datafut": [{"currentPricePs4": "4149000","currentPriceXbox": "3328000","PlayerExternalId": "151152967"},{"currentPricePs4": "3315000","currentPriceXbox": "2720000","PlayerExternalId": "151198320"}]}

ArrayB похож на небольшая база данных для сравнения цен. ArrayA теоретически требуется Перехват с ArrayB. Но это создает новый массив C, который сложен для меня, потому что мне нужен индекс результатов из ArrayA.

Более того, при сравнении обоих идентификаторов массива мне нужно сравнить обе цены и вычислить разницу в переменная, поэтому я могу работать с ней позже. Как мне этого добиться?

Это мой псевдокод. ИДК, если это даже правильный путь ..

Filter ArrayB by ArrayA //by playerID
for(
NewPrice = ArrayA.price / ArrayB.price + Index of ArrayA.price
index = Index of ArrayA.price)

Редактировать: или я мог бы добавить цену от массива B к массиву A и может потом вычислить как-нибудь?

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете передать оба массива в следующую функцию: я сохранил индекс, теперь, если вам нужен только индекс, вам не нужно его сортировать, иначе я сортирую его на основе индекса, чтобы сохранить исходный порядок.

function mergeArrays(arrayA, arrayB) {

    var players = arrayA.data.PlayerList;
    var data = arrayB.data;
    var arrayC = [];

    for(let i=0; i<data.length; i++) {  
        var playerId = data[i].PlayerExternalId;
        for(let j=0; j<players.length; j++) {
            if(players[j].PlayerExternalId != playerId) {
                continue;
            }
            var obj = {};
            obj.playerId = playerId;
            obj.index = j;
            obj.price = players[j].price;
            obj.xboxprice = data[i].currentPriceXbox;
            obj.ps4price = data[i].currentPricePs4;
            arrayC.push(obj);
        }
    }
    arrayC.sort((a,b) => (a.index < b.index)?-1:(a.index>b.index?1:0));
    return arrayC;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...