Привет смотрящим данный вопрос. Поставил себе задачу заполнить свойство объекта разными комбинациями.
let ball = {
name: "ball",
chance: 100
};
let pen = {
name: "pen",
chance: 100
};
let pencil = {
name: "pencil",
chance: 100
};
let things = [ball, pen, pencil];
let table = {
color: "black",
content: {
bigCrate: {
isLocked: false,
loot: []
},
mediumCrate: {
isLocked: false,
loot: []
},
smallCrate: {
isLocked: false,
loot: []
},
}
};
function randomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function rnd() {
for(let key in table.content) {
things.forEach(function(item, i, arr) {
let combination = [];
let chance = randomInt(0, 100);
if(chance <= item.chance) {
combination.push(item);
}
if(i == arr.length - 1) {
table.content[key].loot = combination;
console.log(table.content[key].loot);
}
});
}
}
Что я хотел сделать?
Есть 3 объекта(шарик, ручка и карандаш) и 3 ящика в шкафчике. С ними и надо создать комбинацию, которую и поместим в объект. Также ещё существует вероятность того, что предмет может и не попасть в ящик, эта вероятность есть в объекте, который попадает в комбинацию.
Дело в том, что после выполнении функции в ящике остаётся только последний элемент массива с элементами, а именно карандаш. Даже если поставить шанс на 100%, то шарика и карандаша в ящичке не появится. В чем ошибка?
Последовательность вовсе необязательна, главное, чтобы содержимое ящичков было разным.