javascript - 转换对象数组后将它们分成两半:Javascript
问题描述
我有一个类似于此的对象数组:
arr = [{ val: 1, ts : 123},{val: 2, ts : 125},{val: 3,ts : 120}, {val: 4, ts : 113} , {val:5, ts : 117},{ val: 6, ts : 143},{val: 7, ts : 193},{val: 8, ts : 187}, {val: 9, ts : 115} , {val:10,ts : 116}]
数组的长度总是偶数。现在基本上我想把它们分成两半。
split1 = [{ val: 1, ts : 123},{val: 2, ts : 125},........,{val:5, ts : 117}]
split2 = [{ val: 6, ts : 143},{val: 7, ts : 193},........,{val:10,ts : 116}]
我必须映射这些数组并转换它们的字段(array1 的第一项与 array2 的第一项等等)。假设第一个数组称为“旧”数组,对象有(keys val and ts),第二个数组称为“新”数组,对象有(keys val and ts)。所以我已经映射了它们,最终应该看起来像这样
final = [
{ oldVal:1, oldts: 123 , newVal:6, newts: 143},
{ oldVal:2, oldts: 125 , newVal:7, newts: 193},
{ oldVal:3, oldts: 120 , newVal:8, newts: 187},
{ oldVal:4, oldts: 113 , newVal:9, newts: 115},
{ oldVal:5, oldts: 117 , newVal:10, newts: 116},
]
我尝试过的是:
var res= a.splice(0, arr.length/2);
var c = a.map((val, ind) => { {val, res[ind]} })
有人可以在这里指导吗?
解决方案
您可以简单地迭代数组的一半,并将i
第 th 元素和i + half
th 作为它的对:
const arr = [{ val: 1, ts : 123},{val: 2, ts : 125},{val: 3,ts : 120}, {val: 4, ts : 113} , {val:5, ts : 117},{ val: 6, ts : 143},{val: 7, ts : 193},{val: 8, ts : 187}, {val: 9, ts : 115} , {val:10,ts : 116}];
const final = [];
const half = arr.length / 2;
for (let i = 0; i < half; i++) {
final.push({
oldVal: arr[i].val,
oldTs: arr[i].ts,
newVal: arr[i + half].val,
newTs: arr[i + half].ts,
});
}
console.log(final);
推荐阅读
- python - 试图清除条目,但我只清除最后一个
- php - 通过 SQL 查询更改 WooCommerce 中的订单货币
- android - WorkManager vs AlarmManager,根据情况用什么
- javascript - 如何在 React JS 中的 this.setState 下为多变量设置相同的值
- angular - 渲染动态生成的元素时触发点击事件 Typescript
- angular - 订阅后可观察到的角度工作
- jboss - 如何在 JBOSS EAP 7.1.0 中添加 G1GC 参数?
- html - 为 div 内的侧边元素设置相同的高度
- firebase - Firebase/Firestore:是否可以查询 .where(x == foo || x == bar)?
- mysql - 如何从复选框中获取值并将其传递给另一个 jsp 页面?