如何刷新阵列?

时间:2018-10-10 07:18:41

标签: javascript jquery arrays

使用此功能,我创建一个列表:

var array = [];
var oldarray = [];


function port1() {
    oldarray.push('Port '+parseFloat(document.getElementsByClassName(mylist.name)[1].getAttribute('id'))+': '+mylist.name);
    document.getElementById('text').textContent = array;
    $.each(oldarray, function(i, el){
        if($.inArray(el, array) === -1) array.push(el);
    });
}

我想让最新的条目添加到数组的最后一个索引中,最旧的添加到数组的开头。而且,如果再次有一个条目,则该条目应仅在数组中出现一次,但索引必须“刷新”,以便该条目再次位于数组的最后位置。

3 个答案:

答案 0 :(得分:3)

您可以测试elementarray是否存在,如果存在,则将其删除并最后push,否则只需push

这应该是您的功能:

function port1(arr, el) {
  let ind = arr.indexOf(el);
  if (ind > -1)
    arr.splice(ind, 1);
  arr.push(el);
}

演示:

这是一个有效的演示:

var array = [12, 5, 3, 6];

function port1(arr, el) {
  let ind = arr.indexOf(el);
  if (ind > -1)
    arr.splice(ind, 1);
  arr.push(el);
}

port1(array, 4);
port1(array, 5);
port1(array, 12);

console.log(array);

答案 1 :(得分:2)

类似

function addEntry(array, entry) {
    var entryIndex = array.indexOf(entry);
    if(entryIndex > -1) {
        array.splice(entryIndex, 1);  // Remove the entry from its original position.
    }
    array.push(entry);  // Add to the end of the array.
}

var array = ['Hello', 'World'];
console.log(array);
addEntry(array, 'This is new');
console.log(array);
addEntry(array, 'Hello');
console.log(array);

应该为您工作。此示例输出

[ 'Hello', 'World' ]
[ 'Hello', 'World', 'This is new' ]
[ 'World', 'This is new', 'Hello' ]

请注意,该数组已就地更改。

答案 2 :(得分:0)

感谢您的帮助,您的解决方案确实为我提供了帮助。我也尝试了这种解决方案,它似乎有效。也许不是最好的解决方案,但我想添加一个。坦克的! :)

var array = ['bye bye', 'hello guys', 'good morning'];
    var entry = 'bye bye';
    if (array.includes(entry)) {
        array.splice(array.indexOf(entry),1);
        array.push(entry);
    }