从JavaScript对象数组中删除随机值

Remove random values from JavaScript objects array

本文关键字:删除 随机 数组 JavaScript 对象      更新时间:2023-09-26

我有坐标为的JS数组

    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
    var waypoints = new Array();
    for (var i = 0; i < markers.length; i++) {
        point = new google.maps.LatLng(
        parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lon")));
        waypoints.push({location: point, stopover: false});
   }

如果数组长度大于8,我需要过滤数组,并在其中只留下8个随机值。

谢谢你的帮助。

要解决此问题,您需要能够在0length - 1之间创建一个随机整数,然后在循环中Array.prototype.splice取出该索引处的项,直到达到所需的长度

function randInt(max, min) {
    return ((min | 0) + Math.random() * (max + 1)) | 0;
}
function remRandom(arr, newLength) {
    var a = arr.slice();
    while (a.length > newLength) a.splice(randInt(a.length - 1), 1);
    return a;
}
var foo = ['a', 'b', 'c', 'd', 'e', 'f'];
remRandom(foo, 3); // e.g. ["b", "c", "e"]

我将混合使用javascript的随机函数和数组的拼接方法。对数组大于8的次数执行此操作。

http://www.w3schools.com/jsref/jsref_splice.asp

http://www.w3schools.com/jsref/jsref_random.asp

通过生成一个介于0和array.length-1之间的数字,可以从数组中的随机位置删除一个元素,然后使用splice从数组中剪切该元素。有关元素的删除,请参见此答案:

如何在JavaScript中从数组中删除特定元素?