如何從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]]
謝謝!
uj5u.com熱心網友回復:
您可以分配連接的值。
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; }
uj5u.com熱心網友回復:
有幾種不同的方法可以做到這一點,但您可以將當前陣列索引重新分配給一個陣列,如下所示:
Arr[1] = [Arr[1], 8]. 然后,如果您想繼續添加到 Arr 中索引 1 處的陣列,您可以執行類似Arr[1].push(x).
uj5u.com熱心網友回復:
你可以做這樣的事情(可能不是最好的答案,但可能會有所幫助)
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"只是一個簡單/通用的型別檢查,以查看是否還沒有陣列
uj5u.com熱心網友回復:
這個函式應該基本滿足你的條件
// 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]"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/388141.html
標籤:javascript 数组 数据处理
