需要从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);