编辑:我的大脑即将完成今晚,但当我茫然地盯着你的问题,试图找出你想要做什么,为什么你要这样做,我开始想到一个潜在的方法,比我现在的答案要好。
如果字母值是静态的,您真正关心的是根据数字构建矩阵。如果你有[2,3],你需要一个二乘三的矩阵,中间有静态字母。如果你有一个[3,3],你需要一个2行9行的矩阵。 [2,3,2]将是3行12行。
所以,如果这是一个正确的假设[2,"a","b",3,"c",2]
最终会看起来像:
[1,1,1]
[1,1,2]
[1,2,1]
[1,2,2]
[1,3,1]
[1,3,2]
[2,1,1]
[2,1,2]
[2,2,1]
[2,2,2]
[2,3,1]
[2,3,2]
然后添加静态内容回复于:
[1,"a","b",1,"c",1]
[1,"a","b",1,"c",2]
[1,"a","b",2,"c",1]
[1,"a","b",2,"c",2]
[1,"a","b",3,"c",1]
[1,"a","b",3,"c",2]
[2,"a","b",1,"c",1]
[2,"a","b",1,"c",2]
[2,"a","b",2,"c",1]
[2,"a","b",2,"c",2]
[2,"a","b",3,"c",1]
[2,"a","b",3,"c",2]
那是远程你在找什么?除了他们需要在最终输出中显示的字母之外,这些字母是不相关的吗?
这里就是我离开过今晚:
const data = [2, "a", "b", 3];
// Find the numbers
const numericData = data.filter(item => typeof item === 'number');
console.log(numericData); // [2,3]
// Build the matrix
const matrix = Array(2).fill()
.map(()=>Array(3).fill(0));
console.table(matrix);
// Populate the matrix
// Add static content back in
原来的答复:
我们有了一个更好的办法,但这里有一个方法。
const data = [2, "a", "b", 3];
let output = [];
for (let x = 1; x <= data[0]; x++) {
for (let y = 1; y <= data[3]; y++) {
output.push([x, "a", "b", y]);
}
}
console.log(output);
产量:
[
[1,"a","b",1],
[1,"a","b",2],
[1,"a","b",3],
[2,"a","b",1],
[2,"a","b",2],
[2,"a","b",3]
]
好吧,你有一个数组,然后你想要5个数组? – zer00ne
'[1,c,4,d,e,2]'? –
你想做什么?它看起来并不像你想要的输出与原始数组有什么关系。 –