原数组是这样的
数组里面数组的的元素都是偶数
需要变成这样
那位大佬写个逻辑
说一下思路:
最简单的办法就是先遍历外层数组,内层数组两两一组,那么可以一次进两步i+=2
,然后进行转化{x:arr[i],y:arr[i+1]}
最后push到当前数组中去
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
/**
*
* @param {*} arr 原数组
* @param newArr 新数组
* 循环遍历数组如果角标为奇数的 赋值给x 偶数赋值 y
*
*/
arrXy(arr){
let newArr = Array();
for(let i = 0 ;i < arr.length ; i++){
let obj = []
for(let j = 0 ; j < arr[i].length/2 ; j++){
obj.push({'x':arr[i][2*j],'y':arr[i][2*j+1]})
}
newArr.push(obj)
}
}
https://segmentfault.com/q/10...
js数组的元素的替换
1)代码:
// 方案1 “自己。常规写法”
const solve = (preList = []) => {
const l = preList.length;
let resList = [];
for (let i = 0; i < l; i++) {
const tempList = preList[i],
tempListLength = tempList.length;
resList[i] = [];
for (let j = 0; j < tempListLength; j += 2) {
// 注:下面2行等价于 const [x, y] = [tempList[j], tempList[j + 1]];
const x = tempList[j],
y = tempList[j + 1];
resList[i].push({x, y});
}
}
return resList;
};
const preList = [
['a', 'b', 'c', 'd'],
['e', 'f'],
],
resList = solve(preList);
console.log(resList);
1)代码:
// 方案2 “自己。1行代码 - 装X法”。
const solve = (preList = []) => preList.reduce((acc, cur) =>
acc.concat([
cur.map((value, index, list) =>
index % 2 === 0 ? ({x: list[index], y: list[index + 1]}) : (null)
).filter(v => v !== null)
]), [])
;
const preList = [
['a', 'b', 'c', 'd'],
['e', 'f'],
],
resList = solve(preList);
console.log(resList);
// 下次问问题记得把试验数据给出来(贴代码的形式),如果有代码,把代码也贴出来
const source = [
[..."abcd"],
[..."efghij"],
[..."klmnopqruv"]
];
// 这个就是转换函数
function transform(list) {
return list.map(toPairList);
function toPairList(arr) {
return Array.from(
Array(arr.length / 2 | 0),
(_, i) => ({ x: arr[i * 2], y: arr[i * 2 + 1] })
);
}
}
// 测试
console.log(transform(source));
跟 @NickWang 的思路是一样的,只是处理方式略有不同
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。