Javascript从另一个数组的索引中获取一个数组

lmg*_*114 3 javascript arrays sorting filter

假设我有一个这样的数组:

var colors = ['blue', 'red', 'red', 'red', 'blue', 'red', 'blue', 'blue']
Run Code Online (Sandbox Code Playgroud)

我如何获得一个数组,告诉我每个人的位置?例如:

var reds = [1,2,3,5], blues = [0,4,6,7]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试使用该indexOf();函数,但如果有多个匹配项,它只会返回 1 个值。

Nin*_*olz 8

您可以使用颜色作为属性收集对象中的所有索引。

这种方法的特点

const
    colors = ['blue', 'red', 'red', 'red', 'blue', 'red', 'blue', 'blue'],
    indices = {};

for (let i = 0; i < colors.length; i++) {
    (indices[colors[i]] ??= []).push(i);
}

console.log(indices);
Run Code Online (Sandbox Code Playgroud)