map = new Map([
    [ 1, 'one' ],
    [ 2, 'two' ],
    [ 3, 'three' ], 
]);

मैं मानचित्र से एक यादृच्छिक वस्तु कैसे प्राप्त कर सकता हूं?

0
yarek 30 मई 2017, 11:50

4 जवाब

सबसे बढ़िया उत्तर
function nth(x, iterable) {
    for (const el of iterable)
        if (x-- == 0)
            return el;
    throw new Error("not found");
}

console.log(nth(Math.floor(Math.random() * map.size), map.values())) // or keys or entries
1
Bergi 30 मई 2017, 11:59

आप पहले एक सरणी में मानचित्र के मान प्राप्त कर सकते हैं और फिर सरणी की लंबाई को यादृच्छिक कारक के रूप में ले सकते हैं और मान को यादृच्छिक अनुक्रमणिका पर ले सकते हैं।

var map = new Map([[1, 'one'], [2, 'two'], [3, 'three']]),
    values = [...map.values()],
    random = values[Math.floor(Math.random() * values.length)];

console.log(random);
0
Nina Scholz 30 मई 2017, 11:59

मान लें कि मानचित्र में चाबियां अनुक्रमिक थीं, तो आपको 1 और Map.length के बीच एक यादृच्छिक संख्या प्राप्त होगी, फिर उस यादृच्छिक संख्या के अनुरूप मानचित्र से मान प्राप्त करें।

map = new Map([
    [ 1, 'one' ],
    [ 2, 'two' ],
    [ 3, 'three' ], 
]);

const rand = Math.floor(Math.random() * map.size) + 1;
const randomFromMap = map.get(rand);
console.log(randomFromMap);

यदि कुंजियाँ अनुक्रमिक नहीं थीं, या पूर्णांक नहीं थीं, तो आपको कुंजियों को सरणी के रूप में वापस करने के लिए Map.prototype.keys() का उपयोग करना होगा और फिर कुंजियों के सरणी से यादृच्छिक तत्व का उपयोग करके यादृच्छिक तत्व को पुनः प्राप्त करना होगा। कुछ इस तरह:

const map = new Map([
    [ 1, 'one' ],
    [ 2, 'two' ],
    [ 3, 'three' ], 
]);

const rand = Math.floor(Math.random() * map.size);
const mapKeys = Array.from(map.keys());
console.log(map.get(mapKeys[rand]))
0
Brett DeWoody 30 मई 2017, 12:15

मानचित्र से एक सरणी बनाएं और एक यादृच्छिक कुंजी चुनें। आप अपने सरणी के लिए "पासा" मान बनाने के लिए Math.round(Math.random() * (array.length - 1)) का उपयोग कर सकते हैं।

map = new Map([
    [ 1, 'one' ],
    [ 2, 'two' ],
    [ 3, 'three' ], 
]);

let array = Array.from(map);
let dice = Math.round(Math.random() * (array.length - 1))
let value = array[dice];

// value contains an array with key/value pair.
console.log(value);
-1
Sven van de Scheur 30 मई 2017, 12:11