使用javascript在2D数组周围创建填充的最佳方法是什么
寻找使用javascript在2d数组周围添加填充的最佳(即最不复杂的O(n)方式。应生成“边缘”。目标是将0添加到二维阵列的边缘。下面的示例确实有效,但可能更好。也尽量不使用双for循环。递归函数可能更好,请注意,起始数组可以是任何值,包括所有0。”“fill”只是填充中的值,可以是任何值。最后,任意长度的2d数组如何使用javascript在2D数组周围创建填充的最佳方法是什么,javascript,multidimensional-array,2d,Javascript,Multidimensional Array,2d,寻找使用javascript在2d数组周围添加填充的最佳(即最不复杂的O(n)方式。应生成“边缘”。目标是将0添加到二维阵列的边缘。下面的示例确实有效,但可能更好。也尽量不使用双for循环。递归函数可能更好,请注意,起始数组可以是任何值,包括所有0。”“fill”只是填充中的值,可以是任何值。最后,任意长度的2d数组如何 let arr = [ [1, 1, 1, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 1, 1, 1] ]; functi
let arr = [
[1, 1, 1, 1],
[1, 0, 0, 1],
[1, 0, 0, 1],
[1, 1, 1, 1]
];
function addPadding(array, fill) {
let edge = [fill,fill,fill,fill,fill,fill];
for(let i = 0; i < array.length; i++) {
array[i].push(0);
array[i].unshift(0);
}
array.push(edge);
array.unshift(edge);
return array;
};
arr = addPadding(arr, 0);
console.log('Finally');
console.table(arr);
/**
* expected output
*┌─────────┬───┬───┬───┬───┬───┬───┐
*│ (index) │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │
*├─────────┼───┼───┼───┼───┼───┼───┤
*│ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │
*│ 1 │ 0 │ 1 │ 1 │ 1 │ 1 │ 0 │
*│ 2 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │
*│ 3 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │
*│ 4 │ 0 │ 1 │ 1 │ 1 │ 1 │ 0 │
*│ 5 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │
*└─────────┴───┴───┴───┴───┴───┴───┘
*/
让arr=[
[1, 1, 1, 1],
[1, 0, 0, 1],
[1, 0, 0, 1],
[1, 1, 1, 1]
];
函数addPadding(数组、填充){
让边=[填充,填充,填充,填充,填充,填充];
for(设i=0;i
假设所有数组大小相同。我要做的是
+
,使其成为整数。这里的+
是一元运算符让arr=[
[1, 1, 1, 1],
[1, 0, 0, 1],
[1, 0, 0, 1],
[1, 1, 1, 1]
];
arr=arr.map(a=>“0”+a.join(“”+0”);
常数pad=“0”。重复(arr[0]。长度);
反移位排列(pad);
arr.push(pad);
arr=arr.map(a=>a.split(“”).map(n=>+n));
控制台.工作台(arr)代码>如果我们只是想创建一些值的填充,无论是int还是string,我们都可以这样做。此方法不考虑不同的填充维度。总体复杂度约为4
let arr = [
[1, 1, 1, 1],
[1, 0, 0, 1],
[1, 0, 0, 1],
[1, 1, 1, 1]
];
function addPadding(array, fill) {
const edge = Array(array.length + 2).fill(fill);
array = array.map(a => {
a.push(fill);
a.unshift(fill);
return a;
});
array.push(edge);
array.unshift(edge);
return array;
};
arr = addPadding(arr, 0);
console.log('Finally');
console.table(arr);
谢谢分享。这里有一些好主意,喜欢用地图来复制数组。另外,在复制数组时使用join方法也很好。函数返回的数组仍然是字符串类型。此外,repeat()的使用意味着现在填充必须是字符串。@JoshuaConnor感谢您让我知道这个问题。我已经修好了。参见第5点:您可以在字符串前面加上+
,使其成为整数。这里的+
是一元运算符。你现在怎么想?@JoshuaConnor欢迎来到Stack Overflow。请看,也请阅读,以便您熟悉如何使用这个平台。是的,这是一个很好的修复,我做了一些更改,在输入函数时,填充可以是任何值,使用javascripts和其他函数。再次感谢您的发帖。@JoshuaConnor您认为现在可以接受答案了吗?你会得到一些分数,我也会得到一些分数。欢迎来到堆栈溢出。请看,也通过了,这样你就会熟悉如何使用这个平台。这也很好。我的答案有多复杂,只是好奇?