#javascript #arrays
Вопрос:
Представьте, что у нас есть два массива, как показано ниже
let result = []
let array1 = ['2h', '3h', '4h', '5d', '8d']
let array2 = ['Kd', 'Ks']
Мне нужно взять каждый элемент из array2 и заменить каждый элемент в массив по одному и сохранить в результате
Результат должен быть таким
result = ['Kd', '3h', '4h', '5d', '8d']
['2h', 'Kd', '4h', '5d', '8d']
['2h', '3h', 'Kd', '5d', '8d']
.....
['Ks', '3h', '4h', '5d', '8d']
['2h', 'Ks', '4h', '5d', '8d']
['2h', '3h', 'Ks', '5d', '8d']
.....
А также заменить весь массив2 в массиве1
result = ['Kd', 'Ks', '4h', '5d', '8d']
['2h', 'Kd', 'Ks', '5d', '8d']
.....
['Kd', 'Ks', '4h', '5d', '8d']
['Kd', '3h', 'Ks', '5d', '8d']
['Kd', '3h', '4h', 'Ks', '8d']
.....
Это мой текущий код, нужно проанализировать покерную комбинацию для каждого игрока, а затем отсортировать по силе
let ranks = ['2','3','4','5','6','7','8','9','T','J','Q','K','A']
let suits = ['h','d','c','s']
let gameTypes = ['texas-holdem','omaha-holdem','five-card-draw']
//Lets learn poker rules
// Card == table player
let royalFlush
let straightFlush
let fourKind
let fullHouse
let royal
let straight
let threeKind
let twoPair
let twoKind
let highCard
var combos = []
function variants(table, player) {
let result = []
let tableArr = table.split(/(?=(?:..)*$)/)
let playerArr = player.split(/(?=(?:..)*$)/)
playerArr.forEach((item) => {
for(let i = 0; i < tableArr.length; i ) {
const tempArray = [...tableArr];
tempArray[i] = item;
result.push(tempArray);
}
});
return result
}
function sortHand(input) {
let handAnal = input.split(' ')
handAnal.forEach((e, index) => {
if(index == 0 || index == 1) {
return
} else {
combos.push(variants(handAnal[1], handAnal[index]))
}
})
}
//console.log(sortHand('texas-holdem 4cKs4h8s7s Ad4s Ac4d As9s KhKd 5d6d'))
sortHand('texas-holdem 2h3h4h5d8d 9hJh')
console.log(combos);
//console.log(sortHand('omaha-holdem 3d3s4d6hJc Js2dKd8c KsAsTcTs Jh2h3c9c Qc8dAd6c 7dQsAc5d'))
//console.log(sortHand('five-card-draw 7h4s4h8c9h Tc5h6dAc5c Kd9sAs3cQs Ah9d6s2cKh 4c8h2h6c9c'))
Комментарии:
1. принцип этого сайта заключается в том, чтобы помочь вам усовершенствовать свой код, а не предоставлять вам готовое решение
2. @MisterJojo Я вижу и рассмотрю для будущих постов. Просто это очень важно для меня в нужное время
Ответ №1:
Вот мое решение для этого.
let result = [];
let array1 = ["2h", "3h", "4h", "5d", "8d"];
let array2 = ["Kd", "Ks"];
array2.forEach((item) => { for(let i = 0; i < array1.length; i ) {
const tempArray = [...array1];
tempArray[i] = item;
result.push(tempArray);
}
});
console.log(result);
Здесь мы перебираем массив2 и берем каждый элемент. И для каждого элемента массива 2 мы повторяем первый массив, делаем его копию и храним ее в tempArray. После этого мы помещаем текущий элемент первого массива и помещаем его в tempArray по индексу i из цикла for.
Комментарии:
1. Спасибо вам за ваши усилия. Это выглядит так интересно, ты умный. Как насчет замены всего массива array2 на массив1 ?
2. Должен ли я иметь для этого еще один цикл?
Ответ №2:
Отсортировано вручную, без какой-либо математики или умного решения 🙁
function variants(table, player) {
let result = []
let tableArr = table.split(/(?=(?:..)*$)/)
let playerArr = player.split(/(?=(?:..)*$)/)
playerArr.forEach((item) => {
for(let i = 0; i < tableArr.length; i ) {
const tempArray = [...tableArr];
tempArray[i] = item;
result.push(tempArray);
}
});
for(let i = 1; i <= 10; i ) {
const tempArray = [...tableArr];
if(i<=4) {
tempArray.splice(0, 1, playerArr[0])
tempArray.splice(0 i, 1, playerArr[1])
} else if(i<=7) {
tempArray.splice(1, 1, playerArr[0])
tempArray.splice(-3 i, 1, playerArr[1])
} else if(i<=9) {
tempArray.splice(2, 1, playerArr[0])
tempArray.splice(-5 i, 1, playerArr[1])
} else {
tempArray.splice(3, 1, playerArr[0])
tempArray.splice(4, 1, playerArr[1])
}
result.push(tempArray);
}
return result
}