我有一个数组是一组坐标,我想交换它们,并生成一个新数组。
我想只交换区域条目:
var Regions = [
{"group": "region_01",
"coords": [
[3110, 2323],
[3119, 2344],
[3117, 2385],
[3110, 2417],
[3110, 2323]
]}]
所以它应该是这样的:
var Regions = [
{"group": "region_01",
"coords": [
[2323, 3110],
[2344, 3119],
[2385, 3117],
[2417, 3110],
[2323, 3110]
]}]
反向方法在这种类型的数组中不起作用吗?这样做的最佳方式是什么?
答案 0 :(得分:1)
您可以使用嵌套的Array.forEach()
调用来反转子数组:
const Regions = [{"group":"region_01","coords":[[2323,3110],[2344,3119],[2385,3117],[2417,3110],[2323,3110]]}];
Regions.forEach(({ coords }) =>
coords.forEach((arr) => arr.reverse())
);
console.log(Regions);
答案 1 :(得分:0)
您可以使用函数reverse
修改原始数组。
var Regions = [
{"group": "region_01",
"coords": [
[3110, 2323],
[3119, 2344],
[3117, 2385],
[3110, 2417],
[3110, 2323]
]}];
Regions.forEach((r) => r.coords.forEach(c => c.reverse()));
console.log(Regions);
.as-console-wrapper { max-height: 100% !important; top: 0; }
如果您不想使用函数reverse()
,可以使用函数map
进行交换。
var Regions = [
{"group": "region_01",
"coords": [
[3110, 2323],
[3119, 2344],
[3117, 2385],
[3110, 2417],
[3110, 2323]
]}];
Regions.forEach((r) => r.coords = r.coords.map(([left, right]) => [right, left]));
console.log(Regions);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:0)
var Regions = {
group: "region_01",
coords: [
[3110, 2323],
[3119, 2344],
[3117, 2385],
[3110, 2417],
[3110, 2323]
]
}
for (var i = 0, len = Regions.coords.length; i < len; i++) {
var coord = Regions.coords[i];
coord[1] = [coord[0], coord[0] = coord[1]][0];
}