Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对对象进行暴力';s的价值观?_Javascript - Fatal编程技术网

Javascript 如何对对象进行暴力';s的价值观?

Javascript 如何对对象进行暴力';s的价值观?,javascript,Javascript,我有一组具有数字坐标(x,y)和名称的对象 我想对某个范围内的x和y的每一个值强制执行x和y。(说[0,1,2,3,4,5]) 我使用笛卡尔积,这给了我每一个赋值,就像这样: ["aboutTitle_x", 0] ["aboutTitle_x", 1] ["aboutTitle_x", 2] ["aboutTitle_x", 3] ["aboutTitle_x", 4] ["aboutTitle_x", 5] ["aboutTitle_y", 0] ["aboutTitle_y", 1] ["

我有一组具有数字坐标(x,y)和名称的对象

我想对某个范围内的x和y的每一个值强制执行x和y。(说[0,1,2,3,4,5])

我使用笛卡尔积,这给了我每一个赋值,就像这样:

["aboutTitle_x", 0]
["aboutTitle_x", 1]
["aboutTitle_x", 2]
["aboutTitle_x", 3]
["aboutTitle_x", 4]
["aboutTitle_x", 5]
["aboutTitle_y", 0]
["aboutTitle_y", 1]
["aboutTitle_y", 2]
["aboutTitle_y", 3]
如何迭代(aboutitle_x,aboutitle_y)的潜在组合。我想要的是这样的东西:

{aboutTitle_x: 0, aboutTitle_y: 0}
{aboutTitle_x: 0, aboutTitle_y: 1}
{aboutTitle_x: 0, aboutTitle_y: 2}
{aboutTitle_x: 0, aboutTitle_y: 3}
{aboutTitle_x: 0, aboutTitle_y: 4}

您可以采取稍微不同的方法,使用可能的值存储一个对象(也可以嵌套),从而得到给定属性的所有可能值的数组

函数getCartesian(对象){ 返回Object.entries(Object).reduce((r[k,v])=>{ var-temp=[]; r、 forEach(s=> (Array.isArray(v)?v:[v]).forEach(w=> (w&&typeof w==='object'?getCartesian(w):[w])。forEach(x=> 临时推送(对象赋值({},s,{[k]:x})) ) ) ); 返回温度; }, [{}]); } var值=[0,1,2,3,4,5], 数据={aboutitle_x:values,aboutitle_y:values}, 笛卡尔=getCartesian(数据); console.log(笛卡尔)
.as console wrapper{max height:100%!important;top:0;}
您可以采用稍有不同的方法,使用可能的值(也可以嵌套)存储对象,从而获得给定属性的所有可能值的数组

函数getCartesian(对象){ 返回Object.entries(Object).reduce((r[k,v])=>{ var-temp=[]; r、 forEach(s=> (Array.isArray(v)?v:[v]).forEach(w=> (w&&typeof w==='object'?getCartesian(w):[w])。forEach(x=> 临时推送(对象赋值({},s,{[k]:x})) ) ) ); 返回温度; }, [{}]); } var值=[0,1,2,3,4,5], 数据={aboutitle_x:values,aboutitle_y:values}, 笛卡尔=getCartesian(数据); console.log(笛卡尔)
.as console wrapper{max height:100%!important;top:0;}
您可以使用递归方法,使用
循环值,但使用递归递增键,还可以将对象引用作为当前值传递

var变量={
“Aboutitle_x”:0,
“大约三分之一”:0
}
笛卡尔函数(键,值,k=0,tmp={}){
常数r=[];
如果(k>=keys.length){
r、 推送({…tmp});
返回r;
}
for(设i=0;i控制台日志(候选)您可以使用递归方法,其中使用
循环值,但使用递归增加键,并且还将对象引用作为当前值传递

var变量={
“Aboutitle_x”:0,
“大约三分之一”:0
}
笛卡尔函数(键,值,k=0,tmp={}){
常数r=[];
如果(k>=keys.length){
r、 推送({…tmp});
返回r;
}
for(设i=0;i控制台日志(候选)这非常有效。如果解决方案远未包含在结果列表中,则内存不足。你知道怎么做发电机吗。这就是我现在要做的。你只有两个或更多的属性吗。也许一个更简单的版本也可以。顺便谢谢你。我有任意数量的属性。这非常有效。如果解决方案远未包含在结果列表中,则内存不足。你知道怎么做发电机吗。这就是我现在要做的。你只有两个或更多的属性吗。也许一个更简单的版本也可以。顺便谢谢你。我有任意数量的属性。@user10662977使用生成器签出解决方案。我使用了生成器解决方案。它起作用了!要查看您帮助修复的内容,请执行以下操作:您可以下载layout/layouter.html并在PC上运行它(如果您想查看)working@user10662977检查发电机的解决方案。我使用了发电机解决方案。它起作用了!要查看您帮助修复了什么,可以这样做:您可以下载layout/layouter.html并在您的PC上运行它,如果您希望看到它工作的话
{aboutTitle_x: 0, aboutTitle_y: 0}
{aboutTitle_x: 0, aboutTitle_y: 1}
{aboutTitle_x: 0, aboutTitle_y: 2}
{aboutTitle_x: 0, aboutTitle_y: 3}
{aboutTitle_x: 0, aboutTitle_y: 4}