在JavaScript中,从两个长度相等的不同数组中创建新的数组对象值



需要从JS 中的另外两个数组创建新的数组对象

var array1 = ['one', 'two', 'one, 'two'];
var array2 = ['3', '4', '5', '6'];

这里array1[0]=1表示array2[0]=3,反之亦然。

需要创建一个新的数组对象,以array1的值为键,以array2的值为值

需要输出

var arrayObj = {"one": [{"0":"3", "1":5} ],"two": [{"0":"4", "1":6}]}

这里,array2中的3和5应该推到索引"0";一个";并且数组2中的4和6应该推到索引"0";两个"?

也许我错了,但在我看来,OP想要这样的东西:

function map2(a1,a2){
return a1.reduce((a,c,i)=>{
(a[c]??=[]).push(a2[i]);
return a;
},{})
}
const
array1 = ['one', 'two', 'one', 'two'],
array2 = ['3', '4', '5', '6'];

console.log(map2(array1,array2));

获取一个对象并收集值,然后构建一个具有所需结构的新对象。

const
combine = (a, b) => {
const temp = {};
for (let i = 0; i < array1.length; i++) (temp[a[i]] ??= []).push(b[i]);
return temp;
},
array1 = ['one', 'two', 'one', 'two'],
array2 = ['3', '4', '5', '6'],
result = Object.fromEntries(Object
.entries(combine(array1, array2))
.map(([k, a]) => [k, Object.assign({}, a)])
);
console.log(result);

最新更新