Showing
2 changed files
with
44 additions
and
6 deletions
| ... | @@ -461,12 +461,12 @@ export function restTableHeight($refs) { | ... | @@ -461,12 +461,12 @@ export function restTableHeight($refs) { |
| 461 | * @param {string || Object} keys | 461 | * @param {string || Object} keys |
| 462 | * @description 对数组中指定的JSON字段去重和指定的字段进行排序 | 462 | * @description 对数组中指定的JSON字段去重和指定的字段进行排序 |
| 463 | * @example | 463 | * @example |
| 464 | - * 当指定一个字段去重时:removeDuplicates(arr, "flightRoute") | 464 | + * 当指定一个字段去重时:removeDuplicates(arr, "name") |
| 465 | * 当指定一个字段去重并且排序如下: | 465 | * 当指定一个字段去重并且排序如下: |
| 466 | - * const result = removeDuplicates(arr, { | 466 | + * removeDuplicates(res.data.list, { |
| 467 | - * duplicate: "flightRoute", // 去重字段 | 467 | + * duplicate: "name", // 去重字段 |
| 468 | - * sortType: "Number", // 排序类型:number、string | 468 | + * sortType: "Number", // 排序类型 |
| 469 | - * sortAttr: "routePriority", // 排序字段 | 469 | + * sortAttr: "id", // 排序字段 |
| 470 | * }) | 470 | * }) |
| 471 | */ | 471 | */ |
| 472 | export function removeDuplicates(arr, keys) { | 472 | export function removeDuplicates(arr, keys) { |
| ... | @@ -500,6 +500,7 @@ export function removeDuplicates(arr, keys) { | ... | @@ -500,6 +500,7 @@ export function removeDuplicates(arr, keys) { |
| 500 | if (result.unique.length) { | 500 | if (result.unique.length) { |
| 501 | result.unique = sortFn("unique"); | 501 | result.unique = sortFn("unique"); |
| 502 | } | 502 | } |
| 503 | + // 返回排序去重结果 | ||
| 503 | return result; | 504 | return result; |
| 504 | } | 505 | } |
| 505 | } | 506 | } |
| ... | @@ -514,3 +515,40 @@ export function removeDuplicates(arr, keys) { | ... | @@ -514,3 +515,40 @@ export function removeDuplicates(arr, keys) { |
| 514 | } | 515 | } |
| 515 | } | 516 | } |
| 516 | } | 517 | } |
| 518 | +/** | ||
| 519 | + * Array Json | ||
| 520 | + * @param {Array} arr | ||
| 521 | + * @param {string} key | ||
| 522 | + * @description 把所有重复的过滤出来 | ||
| 523 | + * @example | ||
| 524 | + * filterRepeat(arr, "name") | ||
| 525 | + */ | ||
| 526 | +export function filterRepeat(arr, key) { | ||
| 527 | + const duplicateIds = arr | ||
| 528 | + .map((item) => item[key]) | ||
| 529 | + .filter((key, index, array) => array.indexOf(key) !== index); | ||
| 530 | + | ||
| 531 | + return arr.filter((item) => duplicateIds.includes(item[key])); | ||
| 532 | +} | ||
| 533 | +/** | ||
| 534 | + * Array Json | ||
| 535 | + * @param {Array} arr | ||
| 536 | + * @param {string} key | ||
| 537 | + * @param {string} time | ||
| 538 | + * @description 把数组JSON字段重复的值过滤出来,并且根据时间戳返回最新的那一条且返回新的数组 | ||
| 539 | + * @example | ||
| 540 | + * filterRepeatNewData(arr, "name", "createTime") | ||
| 541 | + */ | ||
| 542 | +export function filterRepeatNewData(arr, key, time) { | ||
| 543 | + // 找出最大时间戳 | ||
| 544 | + const maxDate = filterRepeat(arr, key).reduce( | ||
| 545 | + (max, obj) => | ||
| 546 | + new Date(obj[time]).getTime() > max ? new Date(obj[time]).getTime() : max, | ||
| 547 | + -Infinity | ||
| 548 | + ); | ||
| 549 | + // 找出最大时间戳对应的数据并且返回新的数组 | ||
| 550 | + const result = filterRepeat(arr, key).filter( | ||
| 551 | + (obj) => new Date(obj[time]).getTime() === maxDate | ||
| 552 | + ); | ||
| 553 | + return result; | ||
| 554 | +} | ... | ... |
| ... | @@ -17,7 +17,7 @@ | ... | @@ -17,7 +17,7 @@ |
| 17 | </el-row> | 17 | </el-row> |
| 18 | </el-form> | 18 | </el-form> |
| 19 | <Tables ref="cargoLog" ductName="cargoLog" :order="false" :border='false' :data="data.tableData" | 19 | <Tables ref="cargoLog" ductName="cargoLog" :order="false" :border='false' :data="data.tableData" |
| 20 | - :headerData="tableHeader" tableAlign="center" :showOverflowTooltip="false" :height="tableHeight" | 20 | + :headerData="tableHeader" tableAlign="center" :showOverflowTooltip="false" |
| 21 | :page="selectData.page" :limitSize="selectData.size" :pageSizes="[100]" :pagination="false" | 21 | :page="selectData.page" :limitSize="selectData.size" :pageSizes="[100]" :pagination="false" |
| 22 | :loading="loading" @currentChange="currentChange"> | 22 | :loading="loading" @currentChange="currentChange"> |
| 23 | </Tables> | 23 | </Tables> | ... | ... |
-
Please register or login to post a comment