当前位置:首页 > JavaScript

js实现重排

2026-03-15 09:24:59JavaScript

实现数组重排

使用Fisher-Yates洗牌算法对数组进行随机重排。该算法通过遍历数组并随机交换元素实现高效且均匀的随机排列。

function shuffleArray(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

DOM元素重排

对DOM子元素进行随机排序可以通过以下方式实现。先转换为数组操作后再重新插入DOM。

function shuffleDOM(parent) {
  const children = Array.from(parent.children);
  shuffleArray(children);
  children.forEach(child => parent.appendChild(child));
}

保留原数组的重排

创建数组副本进行重排,避免修改原数组。适用于需要保留原始数据的情况。

function shuffleCopy(array) {
  const newArray = [...array];
  return shuffleArray(newArray);
}

加权随机重排

当需要根据权重进行非均匀重排时,可以使用以下方法。权重越高出现概率越大。

function weightedShuffle(items, weights) {
  const totalWeight = weights.reduce((a, b) => a + b, 0);
  return items.map((_, i) => {
    const rand = Math.random() * totalWeight;
    let weightSum = 0;
    for (let j = 0; j < items.length; j++) {
      weightSum += weights[j];
      if (rand <= weightSum) return items[j];
    }
  });
}

稳定重排

保持部分元素相对顺序的重排实现。通过分组先打乱组间顺序再打乱组内顺序。

js实现重排

function stableShuffle(array, groupSize) {
  const groups = [];
  for (let i = 0; i < array.length; i += groupSize) {
    groups.push(array.slice(i, i + groupSize));
  }
  shuffleArray(groups);
  return groups.flatMap(group => {
    shuffleArray(group);
    return group;
  });
}

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…