use for-of statements to replace for and for-in

This commit is contained in:
MaysWind
2025-09-14 01:40:53 +08:00
parent 67bc81d3e2
commit 4700446ca0
38 changed files with 389 additions and 597 deletions
+11 -13
View File
@@ -1,7 +1,7 @@
import { ref, computed } from 'vue';
import { defineStore } from 'pinia';
import type { BeforeResolveFunction } from '@/core/base.ts';
import { type BeforeResolveFunction, itemAndIndex } from '@/core/base.ts';
import type {
UserCustomExchangeRateUpdateResponse,
@@ -65,15 +65,14 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
return exchangeRateMap;
}
for (let i = 0; i < latestExchangeRates.value.data.exchangeRates.length; i++) {
const exchangeRate = latestExchangeRates.value.data.exchangeRates[i];
for (const exchangeRate of latestExchangeRates.value.data.exchangeRates) {
exchangeRateMap[exchangeRate.currency] = exchangeRate;
}
return exchangeRateMap;
});
function updateExchangeRateToLatestExchangeRateList(exchangeRate: LatestExchangeRate, updateTime: number): void {
function updateExchangeRateToLatestExchangeRateList(latestExchangeRate: LatestExchangeRate, updateTime: number): void {
if (!latestExchangeRates.value || !latestExchangeRates.value.data || !latestExchangeRates.value.data.exchangeRates) {
return;
}
@@ -81,16 +80,16 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
const exchangeRates = latestExchangeRates.value.data.exchangeRates;
let changed = false;
for (let i = 0; i < exchangeRates.length; i++) {
if (exchangeRates[i].currency === exchangeRate.currency) {
exchangeRates.splice(i, 1, exchangeRate);
for (const [exchangeRate, index] of itemAndIndex(exchangeRates)) {
if (exchangeRate.currency === latestExchangeRate.currency) {
exchangeRates.splice(index, 1, latestExchangeRate);
changed = true;
break;
}
}
if (!changed) {
exchangeRates.push(exchangeRate);
exchangeRates.push(latestExchangeRate);
changed = true;
}
@@ -109,9 +108,9 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
const exchangeRates = latestExchangeRates.value.data.exchangeRates;
let changed = false;
for (let i = 0; i < exchangeRates.length; i++) {
if (exchangeRates[i].currency === currency) {
exchangeRates.splice(i, 1);
for (const [exchangeRate, index] of itemAndIndex(exchangeRates)) {
if (exchangeRate.currency === currency) {
exchangeRates.splice(index, 1);
changed = true;
break;
}
@@ -262,8 +261,7 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
const exchangeRates = latestExchangeRates.value.data.exchangeRates;
const exchangeRateMap: Record<string, LatestExchangeRate> = {};
for (let i = 0; i < exchangeRates.length; i++) {
const exchangeRate = exchangeRates[i];
for (const exchangeRate of exchangeRates) {
exchangeRateMap[exchangeRate.currency] = exchangeRate;
}
+17 -18
View File
@@ -1,6 +1,10 @@
import { ref, computed } from 'vue';
import { defineStore } from 'pinia';
import {
values
} from '@/core/base.ts';
import {
type ApplicationSettingValue,
type ApplicationSettingSubValue,
@@ -39,13 +43,15 @@ export const useSettingsStore = defineStore('settings', () => {
function updateApplicationSettingsValueAndAppSettingsFromCloudSetting(key: string, value: string | number | boolean | Record<string, boolean>): void {
const keyItems = key.split('.');
const keyFirstPart = keyItems[0] as string;
if (keyItems.length === 1) {
updateApplicationSettingsValue(keyItems[0], value);
appSettings.value[keyItems[0]] = value;
updateApplicationSettingsValue(keyFirstPart, value);
appSettings.value[keyFirstPart] = value;
} else if (keyItems.length === 2) {
updateApplicationSettingsSubValue(keyItems[0], keyItems[1], value);
(appSettings.value[keyItems[0]] as Record<string, ApplicationSettingSubValue>)[keyItems[1]] = value;
const subKey = keyItems[1] as string;
updateApplicationSettingsSubValue(keyFirstPart, subKey, value);
(appSettings.value[keyFirstPart] as Record<string, ApplicationSettingSubValue>)[subKey] = value;
} else {
logger.warn(`cannot load application cloud setting "${key}", because it has invalid key format`);
}
@@ -60,10 +66,12 @@ export const useSettingsStore = defineStore('settings', () => {
}
const keyItems = key.split('.');
let value: ApplicationSettingValue | ApplicationSettingSubValue = appSettings.value[key];
let value: ApplicationSettingValue | ApplicationSettingSubValue = appSettings.value[key] as (ApplicationSettingValue | ApplicationSettingSubValue);
if (keyItems.length === 2) {
value = (appSettings.value[keyItems[0]] as Record<string, ApplicationSettingSubValue>)[keyItems[1]];
const primaryKey = keyItems[0] as string;
const subKey = keyItems[1] as string;
value = (appSettings.value[primaryKey] as Record<string, ApplicationSettingSubValue>)[subKey] as ApplicationSettingSubValue;
} else if (keyItems.length > 2) {
logger.warn(`cannot get application cloud setting "${key}", because it has invalid key format`);
return null;
@@ -313,8 +321,7 @@ export const useSettingsStore = defineStore('settings', () => {
const settings: ApplicationCloudSetting[] = [];
for (let i = 0; i < applicationSettingKeys.length; i++) {
const settingKey = applicationSettingKeys[i];
for (const settingKey of applicationSettingKeys) {
const cloudSetting = createUserApplicationCloudSetting(settingKey);
if (cloudSetting) {
@@ -333,9 +340,7 @@ export const useSettingsStore = defineStore('settings', () => {
syncedAppSettings.value = arrayItemToObjectField(cloudSettings.map(item => item.settingKey), true);
for (let i = 0; i < cloudSettings.length; i++) {
const setting = cloudSettings[i];
for (const setting of cloudSettings) {
if (!setting || !setting.settingKey) {
continue;
}
@@ -371,13 +376,7 @@ export const useSettingsStore = defineStore('settings', () => {
let isValid = isObject(map);
if (isValid) {
for (const key in map) {
if (!Object.prototype.hasOwnProperty.call(map, key)) {
continue;
}
const value = map[key];
for (const value of values(map)) {
if (!isBoolean(value)) {
isValid = false;
break;
+3 -5
View File
@@ -140,11 +140,9 @@ export const useTransactionsStore = defineStore('transactions', () => {
const allFilterTagIdsCount = computed<number>(() => countSplitItems(transactionsFilter.value.tagIds, ','));
const noTransaction = computed<boolean>(() => {
for (let i = 0; i < transactions.value.length; i++) {
const transactionMonthList = transactions.value[i];
for (let j = 0; j < transactionMonthList.items.length; j++) {
if (transactionMonthList.items[j]) {
for (const transactionMonthList of transactions.value) {
for (const transaction of transactionMonthList.items) {
if (transaction) {
return false;
}
}
+22 -22
View File
@@ -1,7 +1,7 @@
import { ref, computed } from 'vue';
import { defineStore } from 'pinia';
import type { BeforeResolveFunction } from '@/core/base.ts';
import { type BeforeResolveFunction, itemAndIndex } from '@/core/base.ts';
import {
type TransactionTagCreateBatchRequest,
@@ -49,37 +49,37 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
allTransactionTagsMap.value[tag.id] = tag;
}
function updateTagInTransactionTagList(tag: TransactionTag): void {
for (let i = 0; i < allTransactionTags.value.length; i++) {
if (allTransactionTags.value[i].id === tag.id) {
allTransactionTags.value.splice(i, 1, tag);
function updateTagInTransactionTagList(currentTag: TransactionTag): void {
for (const [transactionTag, index] of itemAndIndex(allTransactionTags.value)) {
if (transactionTag.id === currentTag.id) {
allTransactionTags.value.splice(index, 1, currentTag);
break;
}
}
allTransactionTagsMap.value[tag.id] = tag;
allTransactionTagsMap.value[currentTag.id] = currentTag;
}
function updateTagDisplayOrderInTransactionTagList({ from, to }: { from: number, to: number }): void {
allTransactionTags.value.splice(to, 0, allTransactionTags.value.splice(from, 1)[0]);
allTransactionTags.value.splice(to, 0, allTransactionTags.value.splice(from, 1)[0] as TransactionTag);
}
function updateTagVisibilityInTransactionTagList({ tag, hidden }: { tag: TransactionTag, hidden: boolean }): void {
if (allTransactionTagsMap.value[tag.id]) {
allTransactionTagsMap.value[tag.id].hidden = hidden;
allTransactionTagsMap.value[tag.id]!.hidden = hidden;
}
}
function removeTagFromTransactionTagList(tag: TransactionTag): void {
for (let i = 0; i < allTransactionTags.value.length; i++) {
if (allTransactionTags.value[i].id === tag.id) {
allTransactionTags.value.splice(i, 1);
function removeTagFromTransactionTagList(currentTag: TransactionTag): void {
for (const [transactionTag, index] of itemAndIndex(allTransactionTags.value)) {
if (transactionTag.id === currentTag.id) {
allTransactionTags.value.splice(index, 1);
break;
}
}
if (allTransactionTagsMap.value[tag.id]) {
delete allTransactionTagsMap.value[tag.id];
if (allTransactionTagsMap.value[currentTag.id]) {
delete allTransactionTagsMap.value[currentTag.id];
}
}
@@ -223,16 +223,16 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
function changeTagDisplayOrder({ tagId, from, to }: { tagId: string, from: number, to: number }): Promise<void> {
return new Promise((resolve, reject) => {
let tag: TransactionTag | null = null;
let currentTag: TransactionTag | null = null;
for (let i = 0; i < allTransactionTags.value.length; i++) {
if (allTransactionTags.value[i].id === tagId) {
tag = allTransactionTags.value[i];
for (const transactionTag of allTransactionTags.value) {
if (transactionTag.id === tagId) {
currentTag = transactionTag;
break;
}
}
if (!tag || !allTransactionTags.value[to]) {
if (!currentTag || !allTransactionTags.value[to]) {
reject({ message: 'Unable to move tag' });
return;
}
@@ -250,10 +250,10 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
function updateTagDisplayOrders(): Promise<boolean> {
const newDisplayOrders: TransactionTagNewDisplayOrderRequest[] = [];
for (let i = 0; i < allTransactionTags.value.length; i++) {
for (const [transactionTag, index] of itemAndIndex(allTransactionTags.value)) {
newDisplayOrders.push({
id: allTransactionTags.value[i].id,
displayOrder: i + 1
id: transactionTag.id,
displayOrder: index + 1
});
}