具有特定数量的元素后如何清空数组?

时间:2019-06-06 10:32:48

标签: javascript

我正在尝试监视数组,当其中有10个元素时,我想清除数组。我尝试使用代理,但无法清除阵列。我想要实现的是,我试图将一些数据从eventlisteners推入数组,当数组长度达到10时,我想将数据发送到服务器并清除数组。

3 个答案:

答案 0 :(得分:2)

您可以通过重写数组的push方法来做到这一点,

function getArrayWithLimitedLength(length) {
    var array = new Array();

    array.push = function () {
        if (this.length >= length) {
            this.splice(0,this.length)
        }
        return Array.prototype.push.apply(this,arguments);
    }

    return array;
}

创建一个长度为3的数组

var array = getArrayWithLimitedLength(3);

一旦添加了第4个元素,前面的3个元素将被删除,最后一个元素将被添加为第一个元素。

您可以使用this.splice(0,this.length)this.length = 0清除数组

while(this.length > 0) {
    this.pop();
}

示例:

array.push(1) // array-> [1]
array.push(2) // array-> [1,2]
array.push(3) // array-> [1,2,3]
array.push(4) // array-> [4]

答案 1 :(得分:0)

您可以检查数组是否包含10个元素,然后调用函数以发送数组。然后通过将长度设置为零来清空数组。

function sendArray(array) {
    console.log(...array);
}

var array = [];

setInterval((i => () => {
    array.push(i++);
    if (array.length === 10) {
        sendArray(array);
        array.length = 0;
    }
})(0), 100);

答案 2 :(得分:0)

实施您自己的myPush方法:

Array.prototype.myPush = function(element, maxLengthBeforeFlush= Infinity) {
  this.push(element);
  if (this.length > maxLengthBeforeFlush) {
    // code to send this to the server
    this.length = 0;
  }
}

var arr = [];
<button type="button" id="pushToArr" onclick="arr.myPush('a', 5); console.log(arr);">Click to push to arr[]</button>