From 12be46fad8b9c7ee69467434b7950cdd167d0bc5 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 4 Mar 2021 11:27:39 +0800 Subject: [PATCH] chore: improve filter (#8262) --- src/address-edit/index.tsx | 4 ++-- src/area/index.tsx | 6 ++---- src/cascader/index.tsx | 8 ++++---- src/datetime-picker/DatePicker.tsx | 12 ++++-------- src/datetime-picker/TimePicker.tsx | 12 ++++++------ src/dropdown-item/index.tsx | 4 ++-- src/form/index.tsx | 8 ++++---- src/index-bar/index.tsx | 8 ++++---- src/tabs/index.tsx | 4 ++-- src/uploader/index.tsx | 2 +- 10 files changed, 31 insertions(+), 37 deletions(-) diff --git a/src/address-edit/index.tsx b/src/address-edit/index.tsx index 19ab25aa8..62f2b3bb9 100644 --- a/src/address-edit/index.tsx +++ b/src/address-edit/index.tsx @@ -139,7 +139,7 @@ export default createComponent({ if (province && province === city) { arr.splice(1, 1); } - return arr.filter((text) => text).join('/'); + return arr.filter(Boolean).join('/'); } return ''; }); @@ -223,7 +223,7 @@ export default createComponent({ }; const onAreaConfirm = (values: AreaColumnOption[]) => { - values = values.filter((value) => !!value); + values = values.filter(Boolean); if (values.some((value) => !value.code)) { Toast(t('areaEmpty')); diff --git a/src/area/index.tsx b/src/area/index.tsx index afef504fa..05da58b22 100644 --- a/src/area/index.tsx +++ b/src/area/index.tsx @@ -221,9 +221,7 @@ export default createComponent({ const getValues = () => { if (pickerRef.value) { - const values = pickerRef.value - .getValues() - .filter((value: AreaColumnOption) => !!value); + const values = pickerRef.value.getValues().filter(Boolean); return parseValues(values); } return []; @@ -244,7 +242,7 @@ export default createComponent({ } const names = values.map((item) => item.name); - const validValues = values.filter((value) => !!value.code); + const validValues = values.filter((value) => value.code); area.code = validValues.length ? validValues[validValues.length - 1].code diff --git a/src/cascader/index.tsx b/src/cascader/index.tsx index 6e10b74a4..abba4f118 100644 --- a/src/cascader/index.tsx +++ b/src/cascader/index.tsx @@ -98,11 +98,11 @@ export default createComponent({ selectedOption: option, }; - const next = optionsCursor.filter( + const next = optionsCursor.find( (item) => item[valueKey] === option[valueKey] ); - if (next.length) { - optionsCursor = next[0][childrenKey]; + if (next) { + optionsCursor = next[childrenKey]; } return tab; @@ -157,7 +157,7 @@ export default createComponent({ const selectedOptions = state.tabs .map((tab) => tab.selectedOption) - .filter((item) => !!item); + .filter(Boolean); const eventParams = { value: option[valueKey], diff --git a/src/datetime-picker/DatePicker.tsx b/src/datetime-picker/DatePicker.tsx index e9115456c..131a9d040 100644 --- a/src/datetime-picker/DatePicker.tsx +++ b/src/datetime-picker/DatePicker.tsx @@ -167,10 +167,9 @@ export default createComponent({ const originColumns = computed(() => ranges.value.map(({ type, range: rangeArr }) => { - let values = times(rangeArr[1] - rangeArr[0] + 1, (index) => { - const value = padZero(rangeArr[0] + index); - return value; - }); + let values = times(rangeArr[1] - rangeArr[0] + 1, (index) => + padZero(rangeArr[0] + index) + ); if (props.filter) { values = props.filter(type, values); @@ -290,10 +289,7 @@ export default createComponent({ emit('update:modelValue', oldValue ? value : null) ); - watch( - [() => props.filter, () => props.minDate, () => props.maxDate], - updateInnerValue - ); + watch(() => [props.filter, props.minDate, props.maxDate], updateInnerValue); watch( () => props.modelValue, diff --git a/src/datetime-picker/TimePicker.tsx b/src/datetime-picker/TimePicker.tsx index ddac21448..7833513ba 100644 --- a/src/datetime-picker/TimePicker.tsx +++ b/src/datetime-picker/TimePicker.tsx @@ -137,12 +137,12 @@ export default createComponent({ watch(columns, updateColumnValue); watch( - [ - () => props.filter, - () => props.minHour, - () => props.maxHour, - () => props.minMinute, - () => props.maxMinute, + () => [ + props.filter, + props.minHour, + props.maxHour, + props.minMinute, + props.maxMinute, ], updateInnerValue ); diff --git a/src/dropdown-item/index.tsx b/src/dropdown-item/index.tsx index c47c79fc6..3434ceb1f 100644 --- a/src/dropdown-item/index.tsx +++ b/src/dropdown-item/index.tsx @@ -106,11 +106,11 @@ export default createComponent({ return props.title; } - const match = props.options.filter( + const match = props.options.find( (option) => option.value === props.modelValue ); - return match.length ? match[0].text : ''; + return match ? match.text : ''; }; const renderOption = (option: DropdownItemOption) => { diff --git a/src/form/index.tsx b/src/form/index.tsx index 82fe71824..4ae57cc31 100644 --- a/src/form/index.tsx +++ b/src/form/index.tsx @@ -87,7 +87,7 @@ export default createComponent({ new Promise((resolve, reject) => { const fields = getFieldsByNames(names); Promise.all(fields.map((item) => item.validate())).then((errors) => { - errors = errors.filter((item) => item); + errors = errors.filter(Boolean); if (errors.length) { reject(errors); @@ -98,11 +98,11 @@ export default createComponent({ }); const validateField = (name: string) => { - const matched = children.filter((item) => item.name === name); + const matched = children.find((item) => item.name === name); - if (matched.length) { + if (matched) { return new Promise((resolve, reject) => { - matched[0].validate().then((error?: FieldValidateError) => { + matched.validate().then((error?: FieldValidateError) => { if (error) { reject(error); } else { diff --git a/src/index-bar/index.tsx b/src/index-bar/index.tsx index d9cedf35d..143946290 100644 --- a/src/index-bar/index.tsx +++ b/src/index-bar/index.tsx @@ -206,16 +206,16 @@ export default createComponent({ return; } - const match = children.filter((item) => String(item.index) === index); + const match = children.find((item) => String(item.index) === index); - if (match[0]) { - match[0].$el.scrollIntoView(); + if (match) { + match.$el.scrollIntoView(); if (props.sticky && props.stickyOffsetTop) { setRootScrollTop(getRootScrollTop() - props.stickyOffsetTop); } - emit('select', match[0].index); + emit('select', match.index); } }; diff --git a/src/tabs/index.tsx b/src/tabs/index.tsx index a5e00ee28..8ce295367 100644 --- a/src/tabs/index.tsx +++ b/src/tabs/index.tsx @@ -256,11 +256,11 @@ export default createComponent({ // correct the index of active tab const setCurrentIndexByName = (name: number | string) => { - const matched = children.filter( + const matched = children.find( (tab, index) => getTabName(tab, index) === name ); - const index = matched[0] ? children.indexOf(matched[0]) : 0; + const index = matched ? children.indexOf(matched) : 0; setCurrentIndex(index); }; diff --git a/src/uploader/index.tsx b/src/uploader/index.tsx index 36e5fe769..cee8c0bdc 100644 --- a/src/uploader/index.tsx +++ b/src/uploader/index.tsx @@ -240,7 +240,7 @@ export default createComponent({ const imageFiles = props.modelValue.filter(isImageFile); const images = imageFiles .map((item) => item.content || item.url) - .filter((item) => !!item) as string[]; + .filter(Boolean) as string[]; imagePreview = ImagePreview({ images,