您可以通过多种方式在 Js 中实现平等的行为。
Dicitionary 可以替换为Map,或者只是一个带有动态键的对象({}),但是如果你使用一个对象,你只能使用字符串作为键,其他任何东西都将转换为字符串. JS 中还有一个Date 对象,但是表示同一时间的两个日期不匹配:
const a = new Date(0), b = new Date(0);
console.log(a === b); // false
因此它们不会存储在 Map 的同一条目中。相反,您可以将日期字符串化,因为字符串是按值比较的。 int[] 只是 js 中的一个数字数组。
const date1 = new Date(0);
const date1b = new Date(0);
const obj = {};
const map = new Map;
obj[date1] = [1, 2, 3];
// equals:
obj[date1.toString()] = [1, 2, 3];
map.set(date1, [1, 2, 3]);
map.set(date1.toString(), [3, 4, 5]);
console.log(
obj[date1b], // [1, 2, 3]
map.get(date1b), // undefined
map.get(date1b.toString()), // [3, 4, 5]
);
我只需要按天分组
在这种情况下,您必须在 Date 之外生成一个仅包含日期的数字或字符串:
(new Date()).toString().split("T")[0] // 2018-12-11
然后将该字符串用作 Maps / objects 键。