数组orgList为[ "148#148#34", "148#148#33", "148#148#32", "140#141#25", "140#141#24", "149#149#38", "149#149#37", "149#149#36" ]数据为"objectId#deviceId#itemId";根据#截取数组[objectId,deviceId, itemId], 怎么处理能获取新数组newList为 [{objectId: '148', itemIds:[32,33,34]}, {objectId: '149', itemIds:[36,37,38]}, {objectId: '141', itemIds:[24,25]}]
时间: 2023-12-07 07:04:42 浏览: 52
要按照你的要求处理数组 `orgList` 并获取新数组 `newList`,你可以按照以下步骤进行操作:
1. 创建一个空对象 `result` 用于保存最终的结果:
```javascript
const result = {};
```
2. 遍历 `orgList` 中的每个元素,对每个元素进行处理:
```javascript
for (let i = 0; i < orgList.length; i++) {
const item = orgList[i];
// 在这里进行处理
}
```
3. 对每个元素进行处理时,首先使用 `split()` 方法将元素按照 `#` 进行分割,并获取到对应的 `objectId`、`deviceId` 和 `itemId`:
```javascript
const [objectId, deviceId, itemId] = item.split('#');
```
4. 判断 `objectId` 是否已存在于 `result` 中,如果不存在,则创建一个新的对象,并初始化 `itemIds` 数组为空:
```javascript
if (!result[objectId]) {
result[objectId] = {
objectId: objectId,
itemIds: []
};
}
```
5. 将当前的 `itemId` 添加到对应的 `objectId` 的 `itemIds` 数组中:
```javascript
result[objectId].itemIds.push(parseInt(itemId));
```
6. 最后,将 `result` 对象转换为数组形式,并将其赋值给 `newList`:
```javascript
const newList = Object.values(result);
```
完整的代码如下所示:
```javascript
const orgList = [
"148#148#34",
"148#148#33",
"148#148#32",
"140#141#25",
"140#141#24",
"149#149#38",
"149#149#37",
"149#149#36"
];
const result = {};
for (let i = 0; i < orgList.length; i++) {
const item = orgList[i];
const [objectId, deviceId, itemId] = item.split('#');
if (!result[objectId]) {
result[objectId] = {
objectId: objectId,
itemIds: []
};
}
result[objectId].itemIds.push(parseInt(itemId));
}
const newList = Object.values(result);
console.log(newList);
```
运行上述代码,你将得到新数组 `newList`,其格式为 `[{objectId: '148', itemIds:[32,33,34]},{objectId: '149', itemIds:[36,37,38]},{objectId: '140', itemIds:[]},{objectId: '141', itemIds:[24,25]}]`。
阅读全文