Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取数组中最早元素的Javascript_Javascript_Arrays - Fatal编程技术网

获取数组中最早元素的Javascript

获取数组中最早元素的Javascript,javascript,arrays,Javascript,Arrays,假设我要删除数组中最早的元素,因为我想用一个新值替换它。(先进先出) 例如,我有这个值数组 var arr = [1,2,3,4,5,6,7] 我只想得到前三个,值,然后在第四个,替换第一个元素 [1,2,3], [4,2,3], [4,5,3] and so on.. 我想出了一个解决办法 var arr = [1,1,2,3,4,5,6,7]; var newArr = []; for(i=0; i<arr.length; i++){ if(newArr.length ==

假设我要删除数组中最早的
元素,因为我想用一个新值替换它。(先进先出)

例如,我有这个值数组

var arr = [1,2,3,4,5,6,7]
我只想得到前三个,值,然后在第四个,替换第一个元素

[1,2,3], [4,2,3], [4,5,3] and so on..
我想出了一个解决办法

var arr = [1,1,2,3,4,5,6,7];
var newArr = [];
for(i=0; i<arr.length; i++){
    if(newArr.length == 3 && newArr.indexOf(arr[i]) < 0) {
       newArr[i%3] = arr[i];
    } else if(newArr.indexOf(arr[i]) < 0) {
       newArr.push(arr[i])
    }
    console.log(newArr)
}
而不是

1
1,2
1,2,3
4,2,3
4,5,3
4,5,6
7,5,6
我错过了什么

var arr = [1, 1, 2, 3, 4, 5, 6, 7];
var newArr = [], currentIndex = 0;
for (i = 0; i < arr.length; i++) {
    if (newArr.length === 3 && newArr.indexOf(arr[i]) < 0) {
        newArr[currentIndex % 3] = arr[i];
        currentIndex += 1;
    } else if (newArr.indexOf(arr[i]) < 0) {
        newArr.push(arr[i]);
    }
    console.log(newArr)
}

您只需要跟踪当前索引,在该索引中,您需要使用单独的变量来放置数字。

这可能是这样做的原因,也可能是您测试唯一值的原因<代码>如果(newArr.indexOf(arr[i])<0)
谁他妈的不加评论地否决了这个问题@godfrzero,当你分配工作时,你不会为别人做同样的工作,对吗?@Joey Salachipolito不知道代码的上下文是什么,只是要求澄清:D
var arr = [1, 1, 2, 3, 4, 5, 6, 7];
var newArr = [], currentIndex = 0;
for (i = 0; i < arr.length; i++) {
    if (newArr.length === 3 && newArr.indexOf(arr[i]) < 0) {
        newArr[currentIndex % 3] = arr[i];
        currentIndex += 1;
    } else if (newArr.indexOf(arr[i]) < 0) {
        newArr.push(arr[i]);
    }
    console.log(newArr)
}
[ 1 ]
[ 1 ]
[ 1, 2 ]
[ 1, 2, 3 ]
[ 4, 2, 3 ]
[ 4, 5, 3 ]
[ 4, 5, 6 ]
[ 7, 5, 6 ]