我想在数组中推送à值,但不是在最后,而不是在开头,在第一个空索引
显示代码示例:
var test=new Array();
test[0]="Lionel";
test[2]="Jhon";
test.push("Cloé");
结果:
['Lionel',< 1空项>,'Jhon','Cloé']
我需要在Lionel之后拥有Cloé 感谢
编辑这个插入特定索引是不同的,因为我不知道空索引的数量,这是插槽系统。我只想知道我们是否有原生解决方案?。
答案 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;
答案 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);
}
下面的实例:
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;
答案 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)
如果您知道要将值应用于哪个索引,请使用test[x] = "Cloe"
。
如果要将值应用于第一个空项,请使用遍历数组中每个项的for
循环,直到找到一个为空的项。
test = ["Lionel", "", "Jhon", ""];
for (var i = 0; i < test.length; i++) {
if (!test[i]) {
test[i] = "Cloe";
break;
}
}
console.log(test)
如果您只想使用本机功能。使用splice
和indexOf
。
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);
}