Javascript 获取数组中最旧的元素

标签 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 == 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
1,2
1,2,3
1,4,3
1,4,5
6,4,5
6,7,5

而不是

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)
}

输出

[ 1 ]
[ 1 ]
[ 1, 2 ]
[ 1, 2, 3 ]
[ 4, 2, 3 ]
[ 4, 5, 3 ]
[ 4, 5, 6 ]
[ 7, 5, 6 ]

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

关于Javascript 获取数组中最旧的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343267/

相关文章:

php - 摆脱这个代理

Javascript变量包含特殊字符

python - 编辑 : how to declare array of struct in Python

javascript - 将数组分割成特定大小的 block 并将它们变成多维数组

PHP将字符串转换为数组

javascript - 如何检测用户在文本字段中输入了特定字符 ("@")?

javascript - 的作用是什么?和 : mean in these one line return statements?

java - 添加/删除元素时创建新数组?

c++ - 将大于数组中某个值的数字存储到另一个数组中

javascript - 禁用 Android 网页中输入焦点的缩放