[英]Merge objects from the same array by two with different keys
我有一系列双打
const data = [
-0.003,-8.178509172818559E-16,
0.002,-1.3576469946421737E-15,
0.007,-1.2329107629591376E-1]
我想在 react-vis 中使用它们。
在 react-vis 中插入数据的语法是
{x: -0.003, y: -8.178509172818559E-16},
{x: 0.002, y: -1.3576469946421737E-15},
我想做同样的事情。
所以我制作了索引,然后分配了 x 和 y 值
let preparedData = Object.assign({}, data);
let preparedData2 = Object.keys(preparedData).map((keyName =>
{
const newKey = keyName % 2 === 0 ? 'x' : 'y';
return { [newKey] : preparedData[keyName] };
}));
所以我的数组看起来像:
0: {x: -0.003}
1: {y: -8.178509172818559e-16}
2: {x: 0.002}
3: {y: -1.3576469946421737e-15}
4: {x: 0.007}
我想在不使用辅助库的情况下按 x 和 y 对它们进行分组。 我尝试减少没有运气,任何帮助表示赞赏
您可以将两个项目切片,将数组解构为x
和y
并为要推送的对象获取简写属性。
var data = [-0.003, -8.178509172818559E-16, 0.002, -1.3576469946421737E-15, 0.007, -1.2329107629591376E-1], result = [], i = 0; while (i < data.length) { let [x, y] = data.slice(i, i += 2); result.push({ x, y }); } console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
一个简短的方法。
var data = [-0.003, -8.178509172818559E-16, 0.002, -1.3576469946421737E-15, 0.007, -1.2329107629591376E-1], result = data.reduce((r, v, i) => { (r[i >> 1] = r[i >> 1] || {})['xy'[i % 2]] = v; return r; }, []); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
交替收集 x 和 y。
const data = [ -0.003, -8.178509172818559e-16, 0.002, -1.3576469946421737e-15, 0.007, -1.2329107629591376e-1 ]; // Using for Loop: const result = []; for (let i = 0; i < data.length; i += 2) { const xy = { x: data[i], y: data[i + 1] }; result.push(xy); } console.log(result); // Using reduce. const result1 = data.reduce((arr, xy, index) => { if (index % 2 === 0) { const data = { x: xy }; arr.push(data); } else { arr[Math.floor(index / 2)].y = xy; } return arr; }, []); console.log(result1);
.as-console-row {color: blue!important}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.