Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выбор трех элементов из массива (https://javascript.ru/forum/misc/38279-vybor-trekh-ehlementov-iz-massiva.html)

sonntagausgang 26.05.2013 03:06

Выбор трех элементов из массива
 
Есть массив a = [,,,3,,,6,,8,9,10,11,12,13,14,15,16,17,18,]
Над рандомно выбрать из него один два или три элемента и записать в новый массив также состоящий из 20 элементов но все остальные оставить пустыми
то есть должно получиться что-то типа

b = [,,,3,,,6,,,9,,,,,,,,,,]
или другой массив например b1 = [,,,3,,,,,,,,,,,,,,,,]
Народ помогите

elnoro 26.05.2013 16:23

function getRandomInt(min, max)
{
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
var elems = getRandomInt(1, 3),
    i = 0,
    nums = [];

while (i < elems) {
	nums[i] = getRandomInt(1, 20);
	for (var j = 0; j < nums.length; j++) {
		if (nums[i] === nums[j] && i !== j) { 
			nums[j] = getRandomInt(1, 20);
			j = 0;
		}
	}
	b[nums[i]]  = a[nums[i]];
	++i;
}

sonntagausgang 26.05.2013 17:20

спасибо

рони 26.05.2013 17:26

sonntagausgang,
Вариант...
var a = [,,,3,,,6,,8,9,10,11,12,13,14,15,16,17,18,];
function get(arr, e) {
    for (var d = Array(arr.length), c = [], a = 0; a < arr.length; a++) if (a in arr) {
            var f = Math.floor(Math.random() * (c.length + 1));
            c.splice(f, 0, a)
        }
    for (a = 0; a < e; a++) d[c[a]] = arr[c[a]];
    return d
};
alert([a,get(a,3),get(a,3),get(a,3),get(a,2),get(a,2),get(a,1),get(a,1)].join('\n'))


Часовой пояс GMT +3, время: 13:37.