gpt4 book ai didi

javascript - 从一组数组生成矩阵

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:50 24 4
gpt4 key购买 nike

var set1 = [14, 9, 1, 6, 16],
set2 = [4, 15, 16, 14, 11],
set3 = [16, 10, 2, 3, 8],
set4 = [3, 17, 16, 6, 14],
set5 = [19, 18, 14, 6, 20],
set6 = [6, 15, 8, 7, 2],
set7 = [15, 14, 2, 19, 3],
set8 = [8, 2, 14, 10, 5],
set9 = [11, 6, 8, 10, 18],
set10 = [14, 10, 12, 4, 18],
input = [set1, set2, set3, set4, set5, set6, set7, set8, set9, set10];

// Sort function
function sortFunction(a) {

var len = a.length,
temp, i, j;

for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (a[j] < a[i]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}

// Sorting each sets and finding range of each sets
for (var i = 0; i < len; i++) {

input[i] = sortFunction(input[i]);
minRange.push(Math.min.apply(null, input[i]));
maxRange.push(Math.max.apply(null, input[i]));
}

// Finding the range of input

var minimum = Math.min.apply(null, minRange);
var maximum = Math.max.apply(null, maxRange);
var range = maximum - minimum + 1;


// Matrix table function
var tableArray = [];

function table() {
for (var i = 0; i < len; i++) {
for (var j = 0; j < range; j++) {
if (input[i][j] == j) {
tableArray[i].push(input[i][j]);
} else {
tableArray[i].push(0);
}
}
tableArray.push(tableArray[i]);
}
return tableArray;
}

我在解决这个问题时遇到问题:输入是一组 10 个数组,其中每个数组包含 5 个不同的数字,范围为 1 - 20。

输入 =[ [14, 9, 1, 6, 16], [4, 15, 16, 14, 11], [16, 10, 2, 3, 8], [3, 17, 16, 6 , 14], [19, 18, 14, 6, 20], [6, 15, 8, 7, 2], [15, 14, 2, 19, 3], [8, 2, 14, 10, 5 ], [11, 6, 8, 10, 18], [14, 10, 12, 4, 18] ]

我想生成一个 10x20 矩阵作为输出,其中每一行都有 20 个数字,格式如下:

输出 = [ [ 1, 0, 0, 0, 0, 6, 0, 0, 9, 0, 0, 0, 0, 14, 0, 16, 0, 0, 0, 0], [ 0 , 0, 0, 4, 0, 0, 0, 0, 0, 0, 11, 0, 0, 14, 15, 16, 0, 0, 0, 0], [...], ...]

我正在使用 JavaScript 来解决这个问题......

最佳答案

创建一个新的输出数组:

var out = [];

循环遍历输入数组。对于每个嵌套数组,在输出数组中创建一个用 20 个零填充的新数组,然后将输出数组中的这些元素替换为嵌套输入数组中正确位置的元素的值。由于您知道嵌套数组的大小,而且它很小,因此只列出每个元素比使用内部循环更容易。

for (var i = 0, l = arr.length; i < l; i++) {
var el = arr[i];
out[i] = Uint8Array(20);
out[i][el[0] - 1] = el[0];
out[i][el[1] - 1] = el[1];
out[i][el[2] - 1] = el[2];
out[i][el[3] - 1] = el[3];
out[i][el[4] - 1] = el[4];
}

DEMO

如果您的浏览器不支持 Uint8Array,您可以使用单独的函数来创建一个填充数组:

function padArray() {
var out = [];
for (var i = 0, l = 20; i < l; i++) {
out.push(0);
}
return out;
}

并使用:

out[i] = padArray();

关于javascript - 从一组数组生成矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com