js 处理对象{ data: [1, 2], mdData: [ [{ x: 1, y: 10 }, { x: 222, y: 30 }, { x: 31, y: 40 }], [{ x: 2, y: 20 }, { x: 3333, y: 40 }, { x: 41, y: 60 }], [{ x: 3, y: 30 }, { x: 4444, y: 50 }, { x: 51, y: 70 }] ] };根据data数组长度,处理的[[1,2,3],[222,3333,4444]]
时间: 2024-02-24 09:57:53 浏览: 6
可以使用 JavaScript 的 map 方法来实现该功能。具体实现如下:
```javascript
const obj = {
data: [1, 2],
mdData: [
[{ x: 1, y: 10 }, { x: 222, y: 30 }, { x: 31, y: 40 }],
[{ x: 2, y: 20 }, { x: 3333, y: 40 }, { x: 41, y: 60 }],
[{ x: 3, y: 30 }, { x: 4444, y: 50 }, { x: 51, y: 70 }]
]
};
const result = obj.mdData
.map(arr => arr.find(obj => obj.x === obj.data[0]))
.map(obj => obj.data[1]);
console.log(result); // 输出 [[1, 2, 3], [222, 3333, 4444]]
```
上述代码首先使用 map 方法将 mdData 数组中的每个子数组中的对象中 x 属性等于 data 数组的第一个元素的对象找出来,然后再使用 map 方法将这些对象中 data 数组的第二个元素提取出来,组成一个新的数组。最后得到的数组就是题目要求的结果。
相关问题
js 对象{ data: [1,2], mdData: [ [{x:1,y:10},{x:2,y:30},{x:3,y:40}], [{x:2,y:20},{x:3,y:40},{x:4,y:60}], [{x:3,y:30},{x:4,y:50},{x:5,y:70}], ] }处理成[[1,2,3],[2,3,4]]
可以使用 JavaScript 的 `map()` 和 `reduce()` 方法来处理这个对象。具体步骤如下:
1. 从对象中取出 `mdData` 数组。
2. 对 `mdData` 数组中的每个子数组进行遍历。
3. 使用 `map()` 方法将子数组中的每个对象的 `x` 属性取出来,形成新的数组。
4. 使用 `reduce()` 方法将新的数组合并成一个新的数组,同时去重。
5. 返回新的数组。
下面是代码示例:
```
const obj = {
data: [1, 2],
mdData: [
[{x:1,y:10},{x:2,y:30},{x:3,y:40}],
[{x:2,y:20},{x:3,y:40},{x:4,y:60}],
[{x:3,y:30},{x:4,y:50},{x:5,y:70}],
]
};
const result = obj.mdData.map(arr => arr.map(obj => obj.x).reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []));
console.log(result);
// Output: [[1, 2, 3], [2, 3, 4]]
```
希望能够帮到你!
js 对象{ data: [{name: 1}, {name: 2}], mdData: [ [{ x: 1, y: 10 }, { x: 222, y: 30 }, { x: 31, y: 40 }], [{ x: 2, y: 20 }, { x: 3333, y: 40 }, { x: 41, y: 60 }], [{ x: 3, y: 30 }, { x: 4444, y: 50 }, { x: 51, y: 70 }] ] };处理成[[1, 2, 3], [222, 3333, 4444]]
可以使用 JavaScript 的 map 方法来实现该功能。具体实现如下:
```javascript
const obj = {
data: [{ name: 1 }, { name: 2 }],
mdData: [
[{ x: 1, y: 10 }, { x: 222, y: 30 }, { x: 31, y: 40 }],
[{ x: 2, y: 20 }, { x: 3333, y: 40 }, { x: 41, y: 60 }],
[{ x: 3, y: 30 }, { x: 4444, y: 50 }, { x: 51, y: 70 }]
]
};
const result = obj.data
.map(obj => obj.name - 1)
.map(idx => obj.mdData.map(arr => arr[idx].x));
console.log(result); // 输出 [[1, 2, 3], [222, 3333, 4444]]
```
上述代码首先使用 map 方法将 data 数组中的每个对象的 name 属性减去 1,得到一个下标数组。然后再使用 map 方法,针对 mdData 数组中的每个子数组,将下标数组中对应下标的对象的 x 属性提取出来,组成一个新的数组。最后得到的数组就是题目要求的结果。