有人可以帮助我理解以下JavaScript代码在做什么吗?与new Date = new Date
// An array of dates
var eventDates = {};
eventDates[ new Date( '10/04/2017' )] = new Date( '10/04/2017' );
eventDates[ new Date( '10/06/2017' )] = new Date( '10/06/2017' );
eventDates[ new Date( '10/20/2017' )] = new Date( '10/20/2017' );
eventDates[ new Date( '10/26/2017' )] = new Date( '10/26/2017' );
看起来这是一样的吗?
// An array of dates
var eventDates = {};
eventDates[ new Date( '10/04/2017' )];
eventDates[ new Date( '10/06/2017' )];
eventDates[ new Date( '10/20/2017' )];
eventDates[ new Date( '10/26/2017' )];
这是每个数组的console.log。
答案 0 :(得分:3)
第一个示例导致一个对象具有基于用户的语言环境的日期字符串表示形式的键,每个字符串包含与Date对象相同的值。这不是特别有用,部分原因是键会根据用户的语言环境而有所不同,并且因为为了访问其中一个键的值,您需要知道匹配它的日期...这是值你会在第一时间抬头看。
第二个例子导致一个空对象(因为它只是引用每个“key”,而没有为它赋值。)
var eventDates = {};
eventDates[new Date('10/04/2017')] = new Date('10/04/2017');
eventDates[new Date('10/06/2017')] = new Date('10/06/2017');
eventDates[new Date('10/20/2017')] = new Date('10/20/2017');
eventDates[new Date('10/26/2017')] = new Date('10/26/2017');
console.log(eventDates);
var eventDates2 = {};
eventDates2[new Date('10/04/2017')];
eventDates2[new Date('10/06/2017')];
eventDates2[new Date('10/20/2017')];
eventDates2[new Date('10/26/2017')];
console.log(eventDates2)
我不清楚这些例子的作者试图完成的是什么。如果你真的想要一系列日期,你可以这样做:
var eventDatesArray = [];
eventDatesArray.push(new Date('10/04/2017'));
eventDatesArray.push(new Date('10/06/2017'));
eventDatesArray.push(new Date('10/20/2017'));
eventDatesArray.push(new Date('10/26/2017'));
console.log(eventDatesArray);
答案 1 :(得分:1)
它不一样。
在第一个数组中,您将new Date
对象设置为键和数组的值。
在第二步中你只设置了密钥。
例如:
假设您有一个数组array = {};
如果你想设置数组的键,你可以这样做。
array['key1'] = someValue1;
array['key2'] = someValue2;
array['key3'] = someValue3;
然后你可以用每个键获得这些值。
var variable1 = array['key1'];
现在,如果你使用console {log variable1
,那么你得到someValue1
let array1 = {};
array1['key1'] = 1;
array1['key2'] = 2;
array1['key2'] = 3;
let array2 = {};
array2['key1'];
array2['key2'];
array2['key2'];
console.log('First Array',array1['key1']);
console.log('First Array',array2['key1']);

答案 2 :(得分:1)
除了Daniel Beck的正确答案之外,这是使用今天日期的第一个例子的更直接的版本:
let string2DateHash = {
// date pre-stringified
"Wed Nov 01 2017 08:22:46 GMT-0400 (EDT)": new Date()
};
这相当于
let string2DateHash = {
// new ES 6 short-hand property, calls .toString
[new Date()]: new Date()
};
这相当于您原来的
// also calls .toString behind the scenes
var string2DateHash = {};
string2DateHash[new Date()] = new Date();