在数组

时间:2017-09-08 12:17:11

标签: javascript

我想在数组中推送à值,但不是在最后,而不是在开头,在第一个空索引

显示代码示例:

var test=new Array();
test[0]="Lionel";
test[2]="Jhon";
test.push("Cloé");

结果:

  

['Lionel',< 1空项>,'Jhon','Cloé']

我需要在Lionel之后拥有Cloé 感谢

编辑这个插入特定索引是不同的,因为我不知道空索引的数量,这是插槽系统。我只想知道我们是否有原生解决方案?

6 个答案:

答案 0 :(得分:2)

您可以搜索稀疏索引并返回此索引以插入值。



function getIndex(array) {
    var last = 0;
    array.some(function (_, i) {
        return last < i || !++last;
    });
    return last;
}

var test = ["Lionel", , "Jhon"];

test[getIndex(test)] = "Cloé";

console.log(test);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以编写一个简单的函数来查找undefined作为值的间隙,如果找到则放置新值 - 否则只需按到数组的末尾

function insertFirstGap(array, value){
    for(var i = 0;i<array.length;i++){
        if(array[i] === undefined){
            array[i] = value; 
            return; 
        }
    }
    array.push(value);

}

下面的实例:

&#13;
&#13;
var test=new Array();
test[0]="Lionel";
test[2]="Jhon";

insertFirstGap(test,"Cloé");

console.log(test, test.length);

function insertFirstGap(array, value){
    for(var i = 0;i<array.length;i++){
        if(array[i] === undefined){
            array[i] = value;  
            return;
        }
    }
    array.push(value);
     
}
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以通过以下方式完成

var test=new Array();
test[0]="Lionel";
test[2]="Jhon";

let x = test.length;
Object.keys(test).forEach(function(element, idx){
    if(element != idx){
        x = (x==test.length ? idx: x);
    }
})
test[x] = "Cloe"
console.log(test);

答案 3 :(得分:0)

解决方案1 ​​

如果您知道要将值应用于哪个索引,请使用test[x] = "Cloe"

解决方案2

如果要将值应用于第一个空项,请使用遍历数组中每个项的for循环,直到找到一个为空的项。

test = ["Lionel", "", "Jhon", ""];

for (var i = 0; i < test.length; i++) {
  if (!test[i]) {
    test[i] = "Cloe";
    break;
  }
}

console.log(test)

编辑:

如果您只想使用本机功能。使用spliceindexOf

test = ["Lionel", "", "Jhon", ""];

test.splice(test.indexOf(""), 1, "Cloe")

console.log(test)

test.splice(index, 1, item)item插入指定test的{​​{1}}。 index搜索没有值的数组并返回其位置。

答案 4 :(得分:0)

好的,我们没有本机解决方案,这是我的代码解决方案,我的最终目标是插槽系统:

library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(wt)) + 
    geom_histogram() + 
    facet_grid(vs ~ am)

感谢大家的回复

答案 5 :(得分:-1)

function insertIntoFirstEmpty(val, arr) {
   for(var i = 0;i<arr.length;i++) {
      if(typeof arr[i] === 'undefined')
      {
         arr[i] = val;
         return;
      }
   }
   arr.push(val);
}