在 Javascript 如何在特定索引中创建辅助数组?
In Javascript how do I create a secondary array in a specific index?
如何从 Javascript 中的现有数组创建子数组?
例如;
Arr = [5,2,1,2]
那我想在arr的第1位插入8,但保留原来的值2。这样arr就可以变成:
Arr = [5,[2,8],1,2]
我尝试使用 concat,它做了一些事情但复制了所有值。
请记住,这可能会增长,例如Arr = [5,[2,8,3,4],1,[2,3]]
谢谢!
有几种不同的方法可以做到这一点,但您可以像这样将当前数组索引重新分配给数组:
Arr[1] = [Arr[1], 8]
。然后,如果您想继续向 Arr 中索引 1 处的数组添加内容,您可以执行类似 Arr[1].push(x)
.
的操作
您可以分配连接值。
const
addAt = (array, value, index) => array[index] = [].concat(array[index], value),
array = [5, 2, 1, 2];
addAt(array, 8, 1);
console.log(array)
addAt(array, 3, 1);
console.log(array)
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以这样做(可能不是最佳答案,但可能会有所帮助)
const addIntoArray = (arr, toAdd, index) => {
arr[index] = typeof arr[index] == "number" ? [arr[index], toAdd] : [...arr[index], toAdd];
return arr
}
Arr = [5,2,1,2]
console.log(Arr); // [ 5, 2, 1, 2 ]
addIntoArray(Arr, 1, 1)
console.log(Arr); // [ 5, [ 2, 1 ], 1, 2 ]
addIntoArray(Arr, 3, 1)
console.log(Arr) // [ 5, [ 2, 1, 3 ], 1, 2 ]
基本上 ...arr
扩展数组然后我们在它的末尾添加 toAdd
并且 [arr[index], toAdd]
创建一个数组,第一个元素作为数字,第二个元素作为新元素。 (修改了原数组,如示例所示,可能会导致bug,请注意)
typeof arr[index] == "number"
只是一个simple/generic类型检查,以查看是否还没有数组
这个功能应该能满足你的基本条件
// a - array, v - value to insert, i - position to insert
const avi = (a, v, i) => {
r = a.slice(0, i);
r.push([a[i], v]);
a.slice(i+1, a.length).forEach(e => r.push(e));
return r;
}
console.log(JSON.stringify(avi([5,2,1,2], 8, 1)))
//=> "[5,[2,8],1,2]"
如何从 Javascript 中的现有数组创建子数组?
例如;
Arr = [5,2,1,2]
那我想在arr的第1位插入8,但保留原来的值2。这样arr就可以变成:
Arr = [5,[2,8],1,2]
我尝试使用 concat,它做了一些事情但复制了所有值。
请记住,这可能会增长,例如Arr = [5,[2,8,3,4],1,[2,3]]
谢谢!
有几种不同的方法可以做到这一点,但您可以像这样将当前数组索引重新分配给数组:
Arr[1] = [Arr[1], 8]
。然后,如果您想继续向 Arr 中索引 1 处的数组添加内容,您可以执行类似 Arr[1].push(x)
.
您可以分配连接值。
const
addAt = (array, value, index) => array[index] = [].concat(array[index], value),
array = [5, 2, 1, 2];
addAt(array, 8, 1);
console.log(array)
addAt(array, 3, 1);
console.log(array)
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以这样做(可能不是最佳答案,但可能会有所帮助)
const addIntoArray = (arr, toAdd, index) => {
arr[index] = typeof arr[index] == "number" ? [arr[index], toAdd] : [...arr[index], toAdd];
return arr
}
Arr = [5,2,1,2]
console.log(Arr); // [ 5, 2, 1, 2 ]
addIntoArray(Arr, 1, 1)
console.log(Arr); // [ 5, [ 2, 1 ], 1, 2 ]
addIntoArray(Arr, 3, 1)
console.log(Arr) // [ 5, [ 2, 1, 3 ], 1, 2 ]
基本上 ...arr
扩展数组然后我们在它的末尾添加 toAdd
并且 [arr[index], toAdd]
创建一个数组,第一个元素作为数字,第二个元素作为新元素。 (修改了原数组,如示例所示,可能会导致bug,请注意)
typeof arr[index] == "number"
只是一个simple/generic类型检查,以查看是否还没有数组
这个功能应该能满足你的基本条件
// a - array, v - value to insert, i - position to insert
const avi = (a, v, i) => {
r = a.slice(0, i);
r.push([a[i], v]);
a.slice(i+1, a.length).forEach(e => r.push(e));
return r;
}
console.log(JSON.stringify(avi([5,2,1,2], 8, 1)))
//=> "[5,[2,8],1,2]"