数组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], 相同objectId中objectId与deviceId存在一致的,获取对应itemId的值, 相同objectId中objectId与deviceId不同,itemIds为空数组 怎么处理能获取新数组newList为 [{objectId: '148', itemIds:[32,33,34]}, {objectId: '149', itemIds:[36,37,38]}, {objectId: '140', itemIds:[]}, {objectId: '141', itemIds:[24,25]}]
时间: 2024-04-21 07:24:16 浏览: 6
你可以按照以下步骤处理数组 `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. 如果 `deviceId` 与 `objectId` 相同,则将当前的 `itemId` 添加到对应的 `objectId` 的 `itemIds` 数组中:
```javascript
if (deviceId === objectId) {
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: []
};
}
if (deviceId === objectId) {
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]}]`。