javascript - 混合 2 个数组的内容

标签 javascript arrays

我有 2 个数组:

var arr1 = [1, 1, 2, 3, 4, 4];
var arr2 = [];

arr1 定义了一些组,组成员按位置定义。所以组成员01属于组1,
成员 2 属于组 2,
成员 3 属于组 3,
组成员 45 属于组 4

我想将组及其成员加载到另一个数组中,这样我看起来像:

arr2 = [[0,1], [2], [3], [4,5]];

所以 1 组有成员 01 等等...

做的时候:

for(i=0; i<arr1.length; i++){
    arr2[arr1[i]] = i;
}

我得到:

arr2 = [1: 1, 2: 2, 3: 3, 4: 5];

最佳答案

你几乎做对了,但你需要为 arr2 中的每个索引创建一个数组,然后将 i 附加到它:

for(i=0; i<arr1.length; i++){
    arr2[arr1[i]] = arr2[arr1[i]] || [];  // create array here if none exists yet
    arr2[arr1[i]].push(i)                 // add i to array
}

请注意,这会与您想要的解决方案产生一对一的差异(第一组将位于索引 1,而不是您解决方案中的索引 0) , 所以你可以将 arr2 的索引向下移动一个:

for(i=0; i<arr1.length; i++){
    arr2[arr1[i]-1] = arr2[arr1[i]-1] || [];
    arr2[arr1[i]-1].push(i)
}

请注意,如果 arr2 结果中存在间隙,您还没有指定所需的行为。在这种情况下,索引在输出数组中保持未设置状态。

关于javascript - 混合 2 个数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35926731/

相关文章:

javascript - 寻找 HTML5/Javascript PDF 页面翻转器

javascript - 谷歌地图 : Checking if a polyline passes thru a circle

javascript - 如何在 Ember.js 中手动更新 View ?

javascript - 将特定的 JS 对象值附加到它被单击的 div

javascript - 使用 Vue.JS 编辑数组对象

php - 如何从数组键创建变量

android - 检查 json 对象是否包含 json 数组?

java - 如何以正确的方式创建对象数组?

javascript - 如何让@babel/plugin-proposal-private-methods 在 vue.js webpack 模板中工作?

javascript - 如何循环请求 promise API 请求调用?