Array Reverse 对我不起作用......

新手上路,请多包涵

考虑以下代码(React JS 代码):

   poll() {
    var self   = this;
    var url    = "//" + location.hostname + "/api/v1/eve/history/historical-data/" + this.state.itemId + '/' + this.state.regionId + '/40';

    $.get(url, function(result) {
      console.log(result.data, result.data.reverse());
      self.setState({
        error:          null,
        historicalData: result.data.reverse(),
        isLoading: false
      });
    }).fail(function(response) {
      self.setState({
        error: 'Could not fetch average price data. Looks like something went wrong.',
      });
    });
  }

注意 console.log。让我们看一张图片:

在此处输入图像描述

最后我检查了一下,reverse 应该颠倒了数组的顺序。然而事实并非如此。

用错了吗(官方 MDN 文档) ?为什么反向不起作用?

原文由 TheWebs 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse 所述, reverse() 反转数组 顺序,因此数组调用后反转。您调用它两次,导致数组恢复到其原始顺序。尝试这个:

 poll() {
    var self   = this;
    var url    = "//" + location.hostname + "/api/v1/eve/history/historical-data/" + this.state.itemId + '/' + this.state.regionId + '/40';

    $.get(url, function(result) {
        result.data.reverse();
        console.log(result.data, result);
        self.setState({
            error:          null,
            historicalData: result,
            isLoading: false
        });
    }).fail(function(response) {
        self.setState({
            error: 'Could not fetch average price data. Looks like something went wrong.',
    });
}

原文由 AmericanUmlaut 发布,翻译遵循 CC BY-SA 3.0 许可协议

它反转了它, reverse()console.log() 之前执行。它首先在返回引用的位置改变实际数组,然后在记录时, a 也被反转。

 var a = [1,2,3,4];
console.log(a, a.reverse());
// [4, 3, 2, 1] [4, 3, 2, 1]

console.log parens 中的所有内容首先被评估。尝试 2 个反转,你能猜到会发生什么吗,它会回到原来的顺序,就像你的例子一样。

 var a = [1,2,3,4]
console.log(a, a.reverse());
// [4, 3, 2, 1]

原文由 Matt Harrison 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏