Javascript 在返回新对象之前,我可以从该对象获取数据吗?

Javascript 在返回新对象之前,我可以从该对象获取数据吗?,javascript,Javascript,在下面的代码片段中,hour:+date.getHours()将抛出错误ReferenceError:date未定义 data = d.Data.slice(0, ncandles).map(function(d) { return { date: new Date(d.time * 1000), hour: date.getHours(), //date is not defined open: +

在下面的代码片段中,
hour:+date.getHours()
将抛出错误
ReferenceError:date未定义

    data = d.Data.slice(0, ncandles).map(function(d) {
        return {
            date: new Date(d.time * 1000),
            hour: date.getHours(), //date is not defined
            open: +d.open,
            high: +d.high,
            low: +d.low,
            close: +d.close,
            volume: +d.volume
        };
    }).sort(function(a, b) { return d3.ascending(accessor.d(a), accessor.d(b)); });
到目前为止,我获得小时数的唯一方法是创建一个新对象,行为
hour:newdate(d.time*1000).getHours()
,如下所示。在已经创建了新对象的情况下创建新对象似乎是多余和低效的。如何在此范围内处理
date
中的数据

data = d.Data.slice(0, ncandles).map(function(d) {
    return {
        date: new Date(d.time * 1000),
        hour: new Date(d.time * 1000).getHours(),
        open: +d.open,
        high: +d.high,
        low: +d.low,
        close: +d.close,
        volume: +d.volume
    };
}).sort(function(a, b) { return d3.ascending(accessor.d(a), accessor.d(b)); });
另一种方式

data = d.Data.slice(0, ncandles)
  .map(function(d) {
    let obj = {
      date: new Date(d.time * 1000),
      open: +d.open,
      high: +d.high,
      low: +d.low,
      close: +d.close,
      volume: +d.volume,
    }
    obj.hour = obj.date.getHours()
    return obj
  })
  .sort(function(a, b) {
    return d3.ascending(accessor.d(a), accessor.d(b))
  })
另一种方式

data = d.Data.slice(0, ncandles)
  .map(function(d) {
    let obj = {
      date: new Date(d.time * 1000),
      open: +d.open,
      high: +d.high,
      low: +d.low,
      close: +d.close,
      volume: +d.volume,
    }
    obj.hour = obj.date.getHours()
    return obj
  })
  .sort(function(a, b) {
    return d3.ascending(accessor.d(a), accessor.d(b))
  })

非常感谢。因此,必须在
返回
块之外创建对象,然后才能在块的范围内使用它?“返回块”实际上是一个对象;所以你可以创建一个对象,给它添加属性,然后返回它;但在创建时不能使用它的属性。谢谢。因此,必须在
返回
块之外创建对象,然后才能在块的范围内使用它?“返回块”实际上是一个对象;所以你可以创建一个对象,给它添加属性,然后返回它;但在创建时不能使用其属性。