[英]How to combine 2 arrays into 1 object javascript
我有2个要“减少”为1个对象的数组。
因此,例如:
我有..
var originalData = [1,2,3];
var newData = [3,1,2];
我想将这两个数组组合成一个看起来像这样的对象:
var newOrderObject = {1:3, 2:1, 3:2};
即时通讯使用减少功能,但似乎映射它们不同
var newOrderObject = originalData.reduce(function(newData) {
var orderObject = {};
originalData = newData;
return orderObject;
}, {});
任何建议将不胜感激
减少第一个数组(键),并使用index
从第二个数组获取index
:
var originalData = [1,2,3]; var newData = [3,1,2]; var newOrderObject = originalData.reduce(function(obj, key, index) { obj[key] = newData[index]; return obj; }, {}); console.log(newOrderObject);
您可以映射单个对象并将其分配给单个对象。 如果可以使用空数组,请使用一个空对象作为目标值。
var keys = [1, 2, 3], values = [3, 1, 2], object = Object.assign({}, ...keys.map((k, i) => ({ [k]: values[i] }))); console.log(object);
更干净的方法是将数组转置为键/值对数组,然后映射对象。
const transpose = (r, a) => a.map((v, i) => (r[i] || []).concat(v)); var keys = [1, 2, 3], values = [3, 1, 2], object = Object.assign( {}, ...[keys, values] .reduce(transpose, []) .map(([k, v]) => ({ [k]: v })) ); console.log(object);
您只是在使用.reduce
错误。
使用所有3个,您将获得想要的结果。
var originalData = [1,2,3]; var newData = [3,1,2]; var newOrderObject = originalData.reduce(function(acc, item, i) { return Object.assign(acc, { [item]: newData[i] }) }, {}); console.log(newOrderObject)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.