数组长度为7
原始数组
var arr = [2, 4, 6];
需要的数组
arr = [null,null,2,null,4,null,6];
答案 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);