操纵数组Javascript

操纵数组Javascript,javascript,arrays,Javascript,Arrays,我有一个类似这样的数组 var array = [2,a,b,3] 我想安排一下,这样它就可以像这样显示控制台阵列 //console.log [1,a,b,1] [1,a,b,2] [1,a,b,3] [2,a,b,1] [2,a,b,2] [2,a,b,3] 更新 如果我想循环数组中的每个数字,如果那个数组不是静态的而是动态的呢 var array = [2,'a','b',3] var array = [2,'a',4,'c','b',3] var array = [2,'a']

我有一个类似这样的数组

 var array = [2,a,b,3]
我想安排一下,这样它就可以像这样显示控制台阵列

//console.log
[1,a,b,1]
[1,a,b,2]
[1,a,b,3]
[2,a,b,1]
[2,a,b,2]
[2,a,b,3]
更新

如果我想循环数组中的每个数字,如果那个数组不是静态的而是动态的呢

var array = [2,'a','b',3]
var array = [2,'a',4,'c','b',3]
var array = [2,'a']
我想把控制台结果放到数组中

如果有人想知道我为什么这么做,因为我有nasted数组,我会把所有Object.prototypename保存在一个数组中,这样我就可以称它为leater

这个axample

var data = [{a:0,b:[{c:0},{c:0}]},{a:0,b:[{c:0},{c:0}]}]
我有一个函数,所以它会返回

[2,a,b,2,c]
那我就可以叫它了

data [2][a][b][2][c]
“我的函数”可以根据所选数据返回任何内容,因此我想这样做,但如果您的数组已修复,则仍停留在此处

for(i = 1; i <= 2; i++) {
  for(j = 1; j <= 3; j++) {
    console.log("[" + i + ",a,b," + j +"]");
  }
}

对于(i=1;i您需要遍历数组:

var数组=[2',a',b',3];

对于(i=1;i编辑:今晚我的大脑就要结束了,但当我茫然地盯着你的问题,试图弄清楚你想做什么以及为什么你要这么做时,我开始思考一种比我现在的答案更好的潜在方法

如果字母值是静态的,那么您真正关心的是基于数字构建一个矩阵。如果您有[2,3],则需要一个包含静态字母的二乘三矩阵。如果您有[3,3],则需要一个包含9行2项的矩阵。[2,3,2]将包含12行3项

因此,如果这是一个正确的假设,
[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];
让输出=[];
对于(设x=1;x

var len = array.length;

for(i = 1; i <= array[0]; i++) {
    for(j = 1; j <= array[len-1]; j++) {
        console.log([i].concat( array.slice(1, len-1), [j]))
    }
}

[ 1, 'a', 'b', 1 ]
[ 1, 'a', 'b', 2 ]
[ 1, 'a', 'b', 3 ]
[ 2, 'a', 'b', 1 ]
[ 2, 'a', 'b', 2 ]
[ 2, 'a', 'b', 3 ]
var len=array.length;
对于(i=1;i
函数克隆(arr、i、值){
var newArr=arr.slice();
forEach值(v=>newArr[v.index]=Math.floor(i/v.breaker)%v.max+1);
返回newArr;
}
功能结果(arr){
var n=1,
值=arr.reduceRight((acc,e,i)=>{
如果(e的类型==“编号”){
加速推({
索引:i,,
马克斯:e,
断路器:n
});
n*=e;
}
返回acc;
}, []);
var-res=[];
对于(变量i=0;i
console.log(result([2,'a','b',3,4]);
好的,您有一个数组,然后您还需要5个数组?关于
[1,c,4,d,e,2]
?您想做什么?您想要的输出似乎与原始数组没有任何关系。关于负数,例如:
[-5,c]
?该数组保留元素在我的对象数组中的位置,这意味着在我的对象数组中有2个对象,并且有元素a和b,b是包含3个对象的数组谢谢,但我的数组不固定,它可能会变成[1,c,4,d,e,2]或者任何事情,你能更详细地解释你的问题吗?@Frog更新你的问题以包含输入,并显示输出是什么样子。很好,但是动态数组怎么样,因为它是Object.propertyName,所以它不总是负数,字符串,如果数组是动态的怎么办?我尝试使用isNaN来定义它是否是数字,if数字循环,我尝试但失败了,如果数组动态地改变,但是如果我把数组改变成不同的值,比如[1,'c',4,'d',e',2],sistem faill,它能动态运行吗?对于任何数组输入,你希望自定义数组的输出是什么,你也希望循环4次吗?当我运行带有代码的数组时,它不会失败,它会给出两个数组。很好的一个数组保留在数组上,动态数据如何?所以如果我将数据更改为[1,c,4,d,e,2]它仍然可以给我resultUpdate您的问题,以显示该场景中的输出应该是什么样子。我有一个动态的部分解决方案,但它非常复杂。我正在尝试使用reduce来做我认为可行的事情。请参阅我更新的答案/现在的问题,并进行假设。因此我可以使用forEach函数来显示数据[2][a][b] [3][2]为了调用我的nasted数组中的数据,我尝试动态制作一些东西,以便用户可以选择数据伙伴,伙计,先生,cmoon真的真的,啊…你救了我谢谢,我真的很难过,谢谢,很好的解释,谢谢大家谢谢