Javascript 使用数组2元素查找并存储数组1的索引,并将数组1的所有索引存储在数组3中

Javascript 使用数组2元素查找并存储数组1的索引,并将数组1的所有索引存储在数组3中,javascript,arrays,Javascript,Arrays,我有这样的主数组,虽然它不是完整数组,但它是那样的;'数组的格式是什么 newarr: Array(1) 0: Array(239) [0 … 99] 0: i {transformMatrix: null, fill: "#FFFFFF", dirty: false, stroke: "#000000", strokeWidth: 0.172, …} 1: i {transformMatrix: null, fill: "#000000", dirty: false, stroke: "#00

我有这样的主数组,虽然它不是完整数组,但它是那样的;'数组的格式是什么

newarr: Array(1)
0: Array(239)
[0 … 99]
0: i {transformMatrix: null, fill: "#FFFFFF", dirty: false, stroke: "#000000", strokeWidth: 0.172, …}
1: i {transformMatrix: null, fill: "#000000", dirty: false, stroke: "#000000", strokeWidth: 0.172, …}
2: i {transformMatrix: null, fill: "#FFFFFF", dirty: false, stroke: "#000000", strokeWidth: 0.172, …}
3: i {transformMatrix: null, fill: "#0000FF", dirty: false, stroke: "#000000", strokeWidth: 0.172, …}
4: i {transformMatrix: null, fill: "#FFFFFF", dirty: false, stroke: "#000000", strokeWidth: 0.172, …}
5: i {transformMatrix: null, fill: "#FFFFFF", dirty: false, stroke: "#000000", strokeWidth: 0.172, …}
第二个数组是我从数组一保存所有唯一颜色的地方,看起来像这样

uniqueColors: Array(1)
0: "#FFFFFF"
1: "#000000"
2: "#0000FF"
length: 1
__proto__: Array(0)

现在我想使用send array元素查找搜索数组1,并将相同的颜色索引以组形式保存在第三个数组中。

此代码执行两个步骤:

arr1=[{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“000000”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“0000FF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
}
]
dupe=新集合()
arr2=arr1.filter({fill})=>{
如果(复制品有(填充)){
返回错误
}否则{
重复添加(填充)
返回真值
}
})
obj=arr2.reduce((acc1,{fill:f1})=>{
acc1[f1]=arr1.reduce((acc2,{fill:f2},i)=>f1==f2?[…acc2,i]:acc2,[]))
返回acc1
}, {})

console.log(obj)
此代码执行两个步骤:

arr1=[{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“000000”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“0000FF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
},
{
转换矩阵:空,
填写:“FFFFFF”,
肮脏:错,
笔划:“000000”,
冲程宽度:0.172
}
]
dupe=新集合()
arr2=arr1.filter({fill})=>{
如果(复制品有(填充)){
返回错误
}否则{
重复添加(填充)
返回真值
}
})
obj=arr2.reduce((acc1,{fill:f1})=>{
acc1[f1]=arr1.reduce((acc2,{fill:f2},i)=>f1==f2?[…acc2,i]:acc2,[]))
返回acc1
}, {})


console.log(obj)
您能否澄清您希望发生的事情,并给出一个预期输出的示例?您编写了什么代码来实现这一点?@Kobe我想要的是,如果arrray 2中索引[0]处的颜色为黑色,它将搜索数组1中颜色为黑色的所有索引,并将这些索引保存在数组3中,如此数组3(黑色:[0,4,8]blue:[2,3,9])@void这段代码是我用来实现这一点的,但它只在数组3中保存0如果(obj[i]==uniqueColors[j]){//var id=canvas.getActiveObject()。_objects[i].fill.indexOf(uniqueColors[j]);//如果(id!=-1){}var newvar=array(newarr.fill[i]).indexOf(uniqueColors[j]);if(newvar!=-1){patharray.push(newvar);}我试图实现所有这些的整个程序都在这个js小提琴中。你能澄清一下你想要发生什么吗?你能给出一个预期输出的例子吗?你写了什么代码来实现这一点?@Kobe我想要的是如果arrray 2中索引[0]处的颜色是黑色的它将搜索颜色为黑色的数组1中的所有索引,并将这些索引保存在数组3中,如下数组3(黑色:[0,4,8]蓝色:[2,3,9])@void这段代码就是我用来实现这一点的,但它仅在数组3中保存0,如果(obj[i]==uniqueColors[j]){//var id=canvas.getActiveObject()。\u objects[i].fill.indexOf(uniqueColors[j]);//如果(id!=-1){var newvar=Array(newarr.fill[i]).indexOf(uniqueColors[j]);如果(newvar!=-1){patharray.push(newvar);}我试图实现所有这些的整个程序都是在这个js fiddle Hi中实现的,它工作起来很有魅力,但当我尝试在新阵列中推进obj时,它没有work@kakarot一个对象是一个键值存储,我不推荐在这里使用数组。不是真的。如果它在数组中,你怎么知道它的颜色是什么?如果我们使用2d数组,我们不能实现吗这是低效的。我假设你想在对象上循环?使用
object.values()
。您好,它很有魅力,但当我尝试将obj推入新阵列时,它没有work@kakarot一个对象是一个键值存储,我不推荐在这里使用数组。不是真的。如果它在数组中,你怎么知道颜色是什么?如果我们使用2d数组,我们不能做到这一点??这是低效的。我假设你想在对象?使用
Object.values()