Skip to content

第 118 期(算法-排序):数组乱序 #121

@wingmeng

Description

@wingmeng

随机打乱一个数组中项目的顺序:

function shuffle(arr) {
  arr = [...arr];

  for (let i = 0, len = arr.length; i < len; i++) {
    var rdmIndex = i + Math.floor(Math.random() * (len - i));
    [arr[i], arr[rdmIndex]] = [arr[rdmIndex], arr[i]];
  }

  return arr;
}

shuffle([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);

或者封装到数组原型链上:

Array.prototype.shuffle = function() {
  arr = [...this];

  for (let i = 0, len = arr.length; i < len; i++) {
    var rdmIndex = i + Math.floor(Math.random() * (len - i));
    [arr[i], arr[rdmIndex]] = [arr[rdmIndex], arr[i]];
  }

  return arr;
}

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].shuffle();

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions