【问题标题】:How to resort an array of objects? [duplicate]如何对对象数组进行排序? [复制]
【发布时间】:2020-05-18 18:13:34
【问题描述】:

我有一个包含专辑的对象数组,我想在用户重新打开专辑屏幕时对其进行随机播放。

所以我写了一些函数,但它只有一个项目不是全部,那么我该如何处理它以在随机播放后返回所有项目?

专辑

"data": [
    {
      "id": 3,
      "name": "01- Out Life 2002",
      "company": "arabic rap",
      "avatar": "upload/Albums/1579652663.jpg",
      "artists_id": 3,
      "users_id": 1,
      "created_at": "2020-01-22 00:24:23",
      "updated_at": "2020-01-23 18:20:53"
    },
    {
      "id": 1,
      "name": "02 - First 2 Bomb - 2003",
      "company": "arabic rap",
      "avatar": "upload/Albums/1579803681.jpg",
      "artists_id": 3,
      "users_id": 1,
      "created_at": "2020-01-07 01:36:35",
      "updated_at": "2020-01-23 18:21:21"
    },
    {
      "id": 5,
      "name": "Scormix 1",
      "company": "arabic rap",
      "avatar": "upload/Albums/1580658846.jpeg",
      "artists_id": 4,
      "users_id": 1,
      "created_at": "2020-02-02 15:54:06",
      "updated_at": "2020-02-02 15:54:06"
    },
]

  shuffle = arr => arr[Math.floor(arr.length * Math.random())]; 

  // just return One Item ~_~

【问题讨论】:

  • 当前的shuffle函数只从数组中返回一个随机元素,它实际上并没有打乱数组。

标签: javascript arrays reactjs react-native sorting


【解决方案1】:

您的函数只返回使用随机整数访问的一项,但您可以使用Array.map() 从参数一创建一个新数组!

大概你只想展示每张专辑一次,所以我建议excellent answer 来回答类似的问题,提到Fisher-Yates shuffle

【讨论】:

    【解决方案2】:

    它准确地返回它在那里写的内容:一个(单个)项目,其索引是一个随机数。 为了打乱整个数组,您应该迭代项目,而不仅仅是返回一个项目。看看这里的这篇文章: How can I shuffle an array?

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2013-02-24
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多