Так что я считаю, что проблема в arr.push([random[i], random[i+1]])
.
Если вы посмотрите на вывод console.log(random)
, вы поймете, что random
представляет Объект одного мстителя (то есть { id: 4, fullName: 'Bruce Banner', avengerName: 'Hulk', gender: 'Male', city: 'Maryland',markAv: 20 }
).
Это означает, что random[i]
и random[i+1]
оба не определены.
Я предлагаю сделать arr.push([random, avenger[i+1]]);
.
Вы также можете использовать Array.prototype.splice
для удаления каждого мстителя, когда вы их объединяете, чтобы не было дубликатов.
Хорошо, через несколько часов, и я пошел дальшеи получил его для работы со сращиванием / без повторов.Я оставил в закомментированных заявлениях console.log, если вы хотите следовать.
var avenger = [
{id: 1, fullName: "Steve Rogers", avengerName: "Captain America", gender: "Male", city: "New York City", markAv: 10},
{id: 2, fullName: "Tony Stark", avengerName: "IronMan", gender: "Male", city: "New York City", markAv: 15},
{id: 3, fullName: "Thor Odinson", avengerName: "Thor", gender: "Male", city: "Los Angeles", markAv: 13},
{id: 4, fullName: "Bruce Banner", avengerName: "Hulk", gender: "Male", city: "Maryland", markAv: 20},
{id: 5, fullName: "Clint Barton", avengerName: "Hawkeye", gender: "Male", city: "Los Angeles", markAv: 8},
{id: 6, fullName: "Natasha Romanoff", avengerName: "Black Widow", gender: "Female", city: "Paris", markAv: 14},
{id: 7, fullName: "Nick Fury", avengerName: "Nick Fury", gender: "Female", city: "New York City", markAv: 5},
{id: 8, fullName: "Jaume Serradell", avengerName: "Jaumeserr", gender: "Male", city: "Barcelona", markAv: 18}
]
function avengerPairs(myObject) {
var arr = [];
var lengthSave = avenger.length
for (var i=0; i<lengthSave; i++) {
var newLength = avenger.length
var index = Math.floor(Math.random() * newLength)
var randomAvenger = avenger[index];
var pairArr = (avenger.splice(index, 2))
// console.log(avenger.length)
// console.log(pairArr.length)
if (pairArr.length < 2 ) {
var anotherPair
if (avenger.length > 1) {
anotherPair = avenger.splice(index, 1)[0]
} else if (avenger.length === 1) {
anotherPair = avenger.splice(0, 1)[0]
}
// console.log(!!anotherPair)
// console.log(anotherPair)
// console.log('another pair')
if (!!anotherPair === true) {
pairArr.push(anotherPair)
}
}
// console.log(pairArr)
// console.log(!!pairArr[0])
// console.log(!!pairArr[1])
// console.log('pairArr')
if (!!pairArr[0] === true && !!pairArr[1]) {
arr.push(pairArr)
}
}
// console.log(arr);
for (var i=0; i<arr.length; i++) {
// console.log(Math.max(arr[i][0].markAv, arr[i][1].markAv));
if (arr[i][0].markAv < arr[i][1].markAv) {
console.log(arr[i][0].fullName + " vs " + arr[i][1].fullName + " => " + arr[i][1].fullName + " is better!");
} else if (arr[i][0].markAv === arr[i][1].markAv) {
console.log(arr[i][0].fullName + " vs " + arr[i][1].fullName + " => Are equals!");
} else {
console.log(arr[i][0].fullName + " vs " + arr[i][1].fullName + " => " + arr[i][0].fullName + " is better!");
}
}
}
avengerPairs(avenger);