遍历数组并返回数组中某一项
arr.map(item => item.loginUserCount)
返回数组中日期月份
arr.map(item => {
let dateObj = new Date(item.dateTime);
let dateObj = new Date(item.dateTime);
let month = dateObj.getMonth() + 1;
let day = dateObj.getDate();
return `${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;
});
时间排序
.sort((a, b) => new Date(a.dateTime).getTime() - new Date(b.dateTime).getTime());
获取对象中的所有的key
let obj = { name: "Alice", age: 25, city: "New York" }; let keys = Object.keys(obj); console.log(keys); // 输出:["name", "age", "city"]
想要遍历 Games 中的项,并找出 arrData 的 key 与 arr 中对应的项的 dateTime,并返回一个数组,其中每个元素是一个对象,对象的键名是 arr 中的每一项,值是对应的 dateTime。这可以通过 map 和 filter 函数来实现。
const arr = ['Futures', 'Slot', 'Games']; const arrData: { [key: string]: { dateTime: string, id: number }[] } = { Futures: [{ dateTime: '2023-08-05', id: 8 }, { dateTime: '2023-06-15', id: 5 }], Slot: [{ dateTime: '2023-03-05', id: 1 }, { dateTime: '2023-02-15', id: 6 }], Games: [{ dateTime: '2022-02-05', id: 1 }, { dateTime: '2022-12-15', id: 6 }] }; let result = arr.map(key => { return { [key]: arrData[key].map(item => item.dateTime) }; });
遍历数组arr 将 对象obg中的key与数组arr中的name相等的项的值赋值给 arr 中name与obg中的key相等的项的data
arr.map(item => { if (obj.hasOwnProperty(item.name)) { item.data = obj[item.name]; } });
const arr =['Futures','Slot','Games'];
const arrData : { [key: string]: {dateTime: string, id: number}[] } = {
Futures:[{dateTime:'2023-08-05',id:8},{dateTime:'2023-06-15',id:5}],
Slot:[{dateTime:'2023-03-05',id:1},{dateTime:'2023-02-15',id:6}],
Games:[{dateTime:'2022-02-05',id:1},{dateTime:'2022-12-15',id:6}]
};
const month =['2022-02-05, '2022-12-15', '2023-07-19', '2023-07-20', '2023-07-21', '2023-07-22', '2023-07-23', '2023-07-24', '2023-07-25', '2023-07-26', '2023-07-27', '2023-07-28', '2023-07-29', '2023-07-30','2023-08-05',]
遍历 arr 将arrData中键值与arr中对应的项中的dateTime与month中的项相等的项 ,并且返回一个新数组,数组长度与month的长度相等,照度dateTime与month中的项相等的项的id为这个新数组的项, 如果在month中没有找到对应的时间 则将这个新数组的没找到时间这一项设置为0
以下是一个基本的解决方案,使用 map 方法遍历 month 数组,然后对于每个日期,遍历 arr 数组来查找 arrData 中对应的项,然后在这些项中查找日期匹配的项。如果找到匹配的项,就将其 id 添加到新数组中;如果没有找到匹配的项,就将 0 添加到新数组中。
const result = month.map(date => {
for (let key of arr) {
let item = arrData[key].find(d => d.dateTime === date);
if (item) {
return item.id;
}
}
return 0;
});
console.log(result);
**###### const arr =['Futures','Slot','Games'];
const arrData : { [key: string]: {dateTime: string, id: number}[] } = {
Futures:[{dateTime:'2023-08-05',id:8},{dateTime:'2023-06-15',id:5}],
Slot:[{dateTime:'2023-03-05',id:1},{dateTime:'2023-02-15',id:6}],
Games:[{dateTime:'2022-02-05',id:1},{dateTime:'2022-12-15',id:6}] };
const month =['2022-02-05, '2022-12-15', '2023-07-19', '2023-07-20', '2023-07-21', '2023-07-22', '2023-07-23', '2023-07-24', '2023-07-25', '2023-07-26', '2023-07-27', '2023-07-28', '2023-07-29', '2023-07-30','2023-08-05',]
遍历 arr 将arrData中键值与arr中对应的项中的dateTime与month中的项相等的项 ,并且返回一个新数组,数组名是已arr中的项命名 ,数组长度与month的长度相等,照度dateTime与month中的项相等的项的id为这个新数组的项, 如果在month中没有找到对应的时间 则将这个新数组的没找到时间这一项设置为0
这个解决方案的基本思路是,首先遍历 month 数组中的每个日期,然后对于每个日期,遍历 arr 数组来查找 arrData 中的相应项,然后在这些项中查找日期匹配的项。如果找到匹配的项,就返回该项的 id;如果没有找到匹配的项,就返回 0。
这个解决方案假设 arrData 中的每个键都在 arr 数组中存在,且 arrData 中的每个数组都是按日期排序的。如果这不是情况,你可能需要调整代码以适应你的实际需求。
请注意,这个解决方案的时间复杂度是 O(n^2),因为它需要对两个数组进行嵌套遍历。如果 month 或 arr 数组的长度很大,这可能会导致性能问题。在这种情况下,你可能需要考虑使用更高效的数据结构或算法来解决这个问题。**
let result = keys.reduce((acc, curr) => {
let seriesData = monthVal.map(date => {
let item = res.data[curr]?.find(d => d.dateTime === date);
return item ? item.moneyReturnRate : 0;
});
acc[curr] = seriesData;
return acc;
}, {} as { [key: string]: number[] });
switch使用
function getPeriodDate() { switch (period.value) { case 1: return getDateX(dayjs().subtract(1, 'month')); case 2: return getDateX(dayjs().subtract(3, 'month')); case 3: return getDateX(dayjs().subtract(6, 'month')); case 4: return getDateX(dayjs().subtract(12, 'month')); default: return null; // or return a default value } }