Java脚本 - 如果元素不在特定索引处,则将空值添加到数组

时间:2015-06-09 05:27:07

标签: javascript arrays

数组长度为7

原始数组

var arr = [2, 4, 6];

需要的数组

arr = [null,null,2,null,4,null,6];
    数组中不存在
  • 0,因此需要替换为null,
  • 1不可用替换为null和
  • 2可用,所以把2放在新数组中......

9 个答案:

答案 0 :(得分:3)

您可以在阵列上使用splice()方法

var arr=[2,4,6];
var l = arr[arr.length-1];
for(var i=0; i<=l; i++){
    if(arr[i] !== i){
        arr.splice(i, 0, null);
    }
}

输出:[null, null, 2, null, 4, null, 6]

这会修改原始数组。

答案 1 :(得分:1)

您只需要找到数组中的最大值,然后从0迭代到该最大值,检查每个值以查看它是否存在于源中:

var arr = [2, 4, 6];

var max = Math.max.apply(Math, arr);
var result = [];
for (var i = 0; i <= max; i++) {
    if (arr.indexOf(i) !== -1) {
        result[i] = i;
    } else {
        result[i] = null;
    }
}

工作演示:http://jsfiddle.net/jfriend00/c7p8mkqy/

正如我在评论中提到的那样,我想知道你实际上要解决的问题是什么,因为看起来原始和新创建的数据结构都是低效的结构,可能使用不同形式的数据和工作效率更高。但是,如果您解释实际问题,我们只能帮助您做出更明智的选择,而不仅仅是您尝试过的解决方案。

答案 2 :(得分:1)

我会尽快为所有答案写一个永久性案例。

document.getElementById("customerSearchBean.action").value='addCustomer';
document.getElementById("form").action = '/gcldw-web/customerSearch' ;
document.getElementById("form").method='POST';
document.getElementById("form").submit();

答案 3 :(得分:0)

假设您有唯一的输入arr,您希望在其中填充null。试试这个:

var arr = [2, 4, 6];

var output = [];
while (arr.length>0){
    var first = arr.splice(0,1);
    while (output.length<first[0])
        output.push(null);
    output.push(first[0]);
}

// output should be [null,null,2,null,4,null,6];

答案 4 :(得分:0)

尝试:

var arr = [2, 4, 6];
var new_arr = [];
var i = 0;

while(i < 7){
	var pos = arr.indexOf(i++);
	new_arr.push(pos !== -1 ? arr[pos] : null)
}

 document.write(JSON.stringify(new_arr, null, 4))

答案 5 :(得分:0)

var arr = [2, 4, 6];
var result = new Array(7);
arr.forEach(function(a) { result[a] = a;});

答案 6 :(得分:0)

尝试splice():

var arr = [2, 4, 6];
var i = 0,
  l = arr[arr.length - 1];
while (i < l) {
  if(i !== arr[i])
    arr.splice(i, 0, null);
  i++;
}
console.log(arr); //[ null, null, 2, null, 4, null, 6 ]

答案 7 :(得分:0)

有趣的测验:

var arr = [2, 4, 6]
var n = 0

while(arr.length > n) {
  if(arr[n] !== n) {
    arr = arr.slice(0,n).concat(null, arr.slice(n))
  }
  n++
}

console.log(arr) // [null, null, 2, null, 4, null, 6]

这种方法适用于由随机数排序的整数组成的数组。

答案 8 :(得分:0)

var arr = [2, 4, 6];
var narr = (new Array(arr.sort()[arr.length-1]))
arr.map(function(v){
    narr[v] = v;
}); 
for (var i = 0; i<narr.length; i++) narr[i]||(narr[i]=null);
console.log(narr);