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

时间:2013-08-21 11:47:42

标签: javascript jquery arrays json

我有坐标的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。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

要解决这个问题,您需要能够在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"]

答案 1 :(得分:1)

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

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

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

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

How do I remove a particular element from an array in JavaScript?