sup*_*per 13 javascript arrays
假设我有一个包含数据元素的数组,在此示例中为数字,如下所示:
var a = [432, 238, 122, 883, 983];
Run Code Online (Sandbox Code Playgroud)
我想限制数组,这样每次我向数组添加一个元素时,它总是保持7或更小的长度,并删除最旧的元素.
我目前的aproach看起来像这样:
function add(x) {
a.unshift(x);
a = a.slice(0, 7);
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是没有一种更优雅的方式来做它,比如一条线或什么的?
编辑:通过"更优雅",我的意思是,我不需要添加功能,只是很容易内联我需要它的代码,而不是输入例如三次,只有一行也会使代码"更清晰"
zer*_*kms 13
只是添加另一种可能的选择:
a = [x, ...a.slice(0, 6)];
Run Code Online (Sandbox Code Playgroud)
尽管我会亲自选择Nina Scholz的解决方案(改变长度的"更好"条件以及不支持ES6的旧环境)
参考文献:
只需在推动后调整长度属性即可.
function add(x) {
a.unshift(x);
a.length = a.length < 7 ? a.length : 7;
}
Run Code Online (Sandbox Code Playgroud)
清洁方式是先检查
function add(x) {
a.unshift(x);
if (a.length > 7) {
a.length = 7;
}
}
Run Code Online (Sandbox Code Playgroud)