搜索
您的当前位置:首页正文

javascript数组快速打乱重排的方法_javascript技巧

2023-12-04 来源:微柏美食网

代码如下:var arr = [1,2,3,4,5,6,7,8,9,10];var out = arr.sort(function(){ return Math.random() > 0.5;}

小编还为您整理了以下内容,可能对您也有帮助:

JS中数组如何重新排序?

具体代码为:

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script> var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; arr.sort(function (a, b) { return Math.random() - 0.5; //使用随机数,大于0.5的往后排,小于0.5的往前排 }) console.log(arr); </script></body></html>index.html

推荐教程:js入门教程

JS中数组如何重新排序?

具体代码为:

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script> var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; arr.sort(function (a, b) { return Math.random() - 0.5; //使用随机数,大于0.5的往后排,小于0.5的往前排 }) console.log(arr); </script></body></html>index.html

推荐教程:js入门教程

js如何实现数组排序和反转呢?

在 JavaScript 中,可以使用 sort() 方法对数组进行排序,可以使用 reverse() 方法将数组元素反转。

以下是示例代码:

需要注意的是,sort() 方法和 reverse() 方法会修改原数组,如果需要保留原数组,需要先对其进行拷贝。

js 数组 数据去重排序

1.概念(什么叫数组):

数组是一个可以存储一组或一系列相关数据的容器。

2.数组元素(数组的内容)

是指存储在数组中并赋予唯一索引号(下标)的数据段。

数组元素的数据类型可以不相同。

通过下标或者索引号能获取到数组相对应得内容。

3.作用:

为了解决大量相关数据的存储和使用的问题。

4:创建数组的方法:

格1:通过关键字new 创建数组

var arr=new Array(0,1,2,3)

格2:通过字面量创建数组(通过中括号创建数组)

var arr=[0,1,2,3];

不同点:

(1)创建方式和形式不同

(2)数组中如果是一个数字的话,就是一个值

eg:var arr=[4];这个数组中只有一个数字的话,就是一个数

var arr=new Arrary(4);这个数组中只有一个数字的话,表示分配的空间

5:获取数组的长度属性 length

6:instanceof 用于判断一个变量是否是某个对象的实例

var a=["静夜思","野草","忆江南","浣溪沙"];

var a=45;

alert(a instanceof Array);

7: new Array()对象方法

slice() 获取数组中的某段数组元素

(取值是以下标开始,0代表第一个值,从前往后算,-1代表最后一个值,从后往前算)

unshift() 在数组开头添加元素

push() 在数组末尾添加元素

shift() 删除数组中的第一个元素

pop() 删除数组中的最后一个元素

toString() 将数组转换为字符串

join() 将数组元素连接成字符串

concat() 多个数组连接成字符串

sort() 数组元素正排序

reverse() 数组元素反向排序

splice() 删除数组元素/替换数组元素

indexOf() 指定数组中元素首次出现的下标,找不到元素返回-1

8:*数组输出

9:数组去重

10:数组排序

11:数组去重+排序

js 数组 数据去重排序

1.概念(什么叫数组):

数组是一个可以存储一组或一系列相关数据的容器。

2.数组元素(数组的内容)

是指存储在数组中并赋予唯一索引号(下标)的数据段。

数组元素的数据类型可以不相同。

通过下标或者索引号能获取到数组相对应得内容。

3.作用:

为了解决大量相关数据的存储和使用的问题。

4:创建数组的方法:

格1:通过关键字new 创建数组

var arr=new Array(0,1,2,3)

格2:通过字面量创建数组(通过中括号创建数组)

var arr=[0,1,2,3];

不同点:

(1)创建方式和形式不同

(2)数组中如果是一个数字的话,就是一个值

eg:var arr=[4];这个数组中只有一个数字的话,就是一个数

var arr=new Arrary(4);这个数组中只有一个数字的话,表示分配的空间

5:获取数组的长度属性 length

6:instanceof 用于判断一个变量是否是某个对象的实例

var a=["静夜思","野草","忆江南","浣溪沙"];

var a=45;

alert(a instanceof Array);

7: new Array()对象方法

slice() 获取数组中的某段数组元素

(取值是以下标开始,0代表第一个值,从前往后算,-1代表最后一个值,从后往前算)

unshift() 在数组开头添加元素

push() 在数组末尾添加元素

shift() 删除数组中的第一个元素

pop() 删除数组中的最后一个元素

toString() 将数组转换为字符串

join() 将数组元素连接成字符串

concat() 多个数组连接成字符串

sort() 数组元素正排序

reverse() 数组元素反向排序

splice() 删除数组元素/替换数组元素

indexOf() 指定数组中元素首次出现的下标,找不到元素返回-1

8:*数组输出

9:数组去重

10:数组排序

11:数组去重+排序

javascript关联数组顺序混乱,怎么办?

javascript 是通过对象来实现的 map 功能,枚举其属性时是无序的。其实多数语言的 map 为了提高检索效率都是进行了一定的排序,都不是按插入元素的顺序来枚举的,除非专门实现的 SortedMap 之类。
如果你需要查找,也需要顺序,数据少可以直接用数组
var dataList = [{
key: '01',
value: '01'
}, {
key: '02',
value: '02'
}, {
key: '10',
value: '10'
}, {
key: '11',
value: '11'
}, {
key: '21',
value: '21'
}]

// 通过遍历查找数据,如找 "11"
var v = (function(data, k) {
for (var i = 0, length = data.length; i < length; i++) {
if (data[i].key === k) {
return data[i].value
}
}
})(dataList, "11")

如果数据比较多,可以使用 object + array 的办法,比如
全选复制放进笔记var data = {
map: {
'01': '01',
'02': '02',
'10': '10',
'11': '11',
'21': '21'
},
order: [
"01", "02", "10", "11", "21"
]
}

遍历数据可以这样
data.order.forEach(function(key) {
console.log(key + " = " + data.map[key])
})

javascript关联数组顺序混乱,怎么办?

javascript 是通过对象来实现的 map 功能,枚举其属性时是无序的。其实多数语言的 map 为了提高检索效率都是进行了一定的排序,都不是按插入元素的顺序来枚举的,除非专门实现的 SortedMap 之类。
如果你需要查找,也需要顺序,数据少可以直接用数组
var dataList = [{
key: '01',
value: '01'
}, {
key: '02',
value: '02'
}, {
key: '10',
value: '10'
}, {
key: '11',
value: '11'
}, {
key: '21',
value: '21'
}]

// 通过遍历查找数据,如找 "11"
var v = (function(data, k) {
for (var i = 0, length = data.length; i < length; i++) {
if (data[i].key === k) {
return data[i].value
}
}
})(dataList, "11")

如果数据比较多,可以使用 object + array 的办法,比如
全选复制放进笔记var data = {
map: {
'01': '01',
'02': '02',
'10': '10',
'11': '11',
'21': '21'
},
order: [
"01", "02", "10", "11", "21"
]
}

遍历数据可以这样
data.order.forEach(function(key) {
console.log(key + " = " + data.map[key])
})

JS随机数组排重

用查找数组去重复的效率极低,应该用Object或者JS2015的Set对象做

const s = new Set();
while(s.size<10)
s.add(parseInt(Math.random()*10));
console.log(s);

Set { 2, 7, 0, 4, 9, 3, 6, 1, 8, 5 }

读下来你的代码,好像在写随机一共10以内10个数还要去重。就可能不是要为了去重,而是想数组洗牌,就该用常见的算法。

function shuffleArray(a) {
   for(var i=a.length-1; i>0; i--) {
       var j = Math.floor(Math.random() * (i + 1));
       var t= a[i]; a[i] = a[j]; a[j] = t;
   }
}
const a=[];
for(var i=0;i<10;i++) a.push(i);
shuffleArray(a)
console.log(a);

[ 0, 6, 7, 8, 3, 5, 1, 2, 4, 9 ]

JS随机数组排重

用查找数组去重复的效率极低,应该用Object或者JS2015的Set对象做

const s = new Set();
while(s.size<10)
s.add(parseInt(Math.random()*10));
console.log(s);

Set { 2, 7, 0, 4, 9, 3, 6, 1, 8, 5 }

读下来你的代码,好像在写随机一共10以内10个数还要去重。就可能不是要为了去重,而是想数组洗牌,就该用常见的算法。

function shuffleArray(a) {
   for(var i=a.length-1; i>0; i--) {
       var j = Math.floor(Math.random() * (i + 1));
       var t= a[i]; a[i] = a[j]; a[j] = t;
   }
}
const a=[];
for(var i=0;i<10;i++) a.push(i);
shuffleArray(a)
console.log(a);

[ 0, 6, 7, 8, 3, 5, 1, 2, 4, 9 ]

在JavaScript中有哪些高效算法

这篇文章主要介绍了JavaScript实现删除数组重复元素的5种常用高效算法,结合实例形式总结分析了javascript删除数组重复元素的几种常见操作技巧,需要的朋友可以参考下

本文实例讲述了JavaScript实现删除数组重复元素的5种常用高效算法。分享给大家供大家参考,具体如下:

这里就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码。

1.遍历数组法

最简单的去重方法,

实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下:

// 最简单数组去重法

function unique1(array){

var n = []; //一个新的临时数组

//遍历当前数组

for(var i = 0; i < array.length; i++){

//如果当前数组的第i已经保存进了临时数组,那么跳过,

//否则把当前项push到临时数组里面

if (n.indexOf(array[i]) == -1) n.push(array[i]);

}

return n;

}

// 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持

if (!Array.prototype.indexOf){

// 新增indexOf方法

Array.prototype.indexOf = function(item){

var result = -1, a_item = null;

if (this.length == 0){

return result;

}

for(var i = 0, len = this.length; i < len; i++){

a_item = this[i];

if (a_item === item){

result = i;

break;

}

}

return result;

}

}2.对象键值对法

该方法执行的速度比其他任何方法都快, 就是占用的内存大一些;

实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。注意点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。

// 速度最快, 占空间最多(空间换时间)

function unique2(array){

var n = {}, r = [], len = array.length, val, type;

for (var i = 0; i < array.length; i++) {

val = array[i];

type = typeof val;

if (!n[val]) {

n[val] = [type];

r.push(val);

} else if (n[val].indexOf(type) < 0) {

n[val].push(type);

r.push(val);

}

}

return r;

}3.数组下标判断法

还是得调用“indexOf”性能跟方法1差不多,

实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。

function unique3(array){

var n = [array[0]]; //结果数组

//从第二项开始遍历

for(var i = 1; i < array.length; i++) {

//如果当前数组的第i项在当前数组中第一次出现的位置不是i,

//那么表示第i项是重复的,忽略掉。否则存入结果数组

if (array.indexOf(array[i]) == i) n.push(array[i]);

}

return n;

}4.排序后相邻去除法

虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。

实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。

// 将相同的值相邻,然后遍历去除重复值

function unique4(array){

array.sort();

var re=[array[0]];

for(var i = 1; i < array.length; i++){

if( array[i] !== re[re.length-1])

{

re.push(array[i]);

}

}

return re;

}5.优化遍历数组法

源自外国博文,该方法的实现代码相当酷炫;

实现思路:获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)

// 思路:获取没重复的最右一值放入新数组

function unique5(array){

var r = [];

for(var i = 0, l = array.length; i < l; i++) {

for(var j = i + 1; j < l; j++)

if (array[i] === array[j]) j = ++i;

r.push(array[i]);

}

return r;

}上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在nodejs中Express与Koa2对比区分(详细教程)

js中的闭包(详细教程)

JS中的单例模式实现对数据增删改查

使用Vue仿制今日头条(详细教程)

React开发如何配置eslint

js的作用域、预解析机制(详细教程)

JS中的各种排序方法

数据结构算法中排序有很多种,常见的、不常见的,至少包含十种以上。根据它们的特性,可以大致分为两种类型:比较类排序和非比较类排序

冒泡排序是一次比较两个元素,如果顺序是错误的就把它们交换过来。,直到不需要再交换

快速排序的基本思想是通过一趟排序,将待排记录分隔成的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序

从数列中挑出一个元素,称为 “基准”(pivot);然后重新排序数列,所有元素比基准值小的摆放在基准前面、比基准值大的摆在基准的后面;在这个区分搞定之后,该基准就处于数列的中间位置;然后把小于基准值元素的子数列(left)和大于基准值元素的子数列(right)递归地调用 quick 方法排序完成,这就是快排的思路

通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,从而达到排序的效果

插入排序的思路是基于数组本身进行调整的,首先循环遍历从 i 等于 1 开始,拿到当前的 current 的值,去和前面的值比较,如果前面的大于当前的值,就把前面的值和当前的那个值进行交换,通过这样不断循环达到了排序的目的

将最小的元素存放在序列的起始位置,再从剩余未排序元素中继续寻找最小元素,然后放到已排序的序列后面……以此类推,直到所有元素均排序完毕

堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质,即子结点的键值或索引总是小于(或者大于)它的父节点。堆的底层实际上就是一棵完全二叉树,可以用数组实现

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并

通过 mid 可以把该数组分成左右两个数组,分别对这两个进行递归调用排序方法,最后将两个数组按照顺序归并起来

微柏美食网还为您提供以下相关内容希望对您有帮助:

javascript怎样数组去重并排序.效率最快的

Array.prototype.unique1 = function(){ console.time("数组去重法1"); //记录开始执行的时间 var arr = []; //创建一个临时数组 var obj = {}; //创建一个空对象 for(var i = 0; i &lt; this.length; i++){ //遍历当前要去重的数组 if(!obj[this[i]]){  /...

在JavaScript中有哪些高效算法

1.遍历数组法最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下:// 最简单数组去重法function unique1(array){ var n = []; //...

js 数组使用技巧有哪些?

1. 简洁去重:ES6的新风尚&lt;/面对去重问题,ES6的Set和Array.from或扩展运算符(...)为面试官的难题提供了现代解决方案,轻松告别繁琐的循环检查。2. 替换与删除:splice的灵活运用&lt;/在日常开发中,splice方法大显身手,通过指定索引和数量,你可以精确地替换或删除数组中的元素,它的返回值还包含了被...

利用javascript给数组去重的几种思路和实现代码汇总

1.遍历数组法最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下:2.对象键值对法该方法执行的速度比其他任何方法都快, 就是占用的内存...

JavaScript数组去重的几种方法

1.最基础的去重:双重遍历双重遍历的核心就是依据【1】,通过拿出一个元素和剩下的元素依次比较,如果全部不相等则证明此元素为唯一。let a=[{a:1},{b:2},{c:3},{a:1},{d:2}]let c=[1,2,3,4,5,6,1,2,3]function unique(arr){ let b=[] for(let i=0;i&lt;arr.length;i++...

Javascript中数组的常用方法有哪些?

concat()连接两个或更多的数组,并返回结果。join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。pop()删除并返回数组的最后一个元素 push()向数组的末尾添加一个或更多元素,并返回新的长度。reverse()颠倒数组中元素的顺序。shift()删除并返回数组的第一个元素 slice()从某个已有...

javascript关联数组顺序混乱,怎么办?

如果数据比较多,可以使用 object + array 的办法,比如 全选复制放进笔记var data = { map: { '01': '01','02': '02','10': '10','11': '11','21': '21'},order: ["01", "02", "10", "11", "21"]} 遍历数据可以这样 data.order.forEach(function(key) { console....

javascript的一个数字数组,如何对其进行排序?

sort()方法用于对数组的元素进行排序。如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个...

JavaScript几种数组去掉重复值的方法推荐_javascript技巧

以下方法,网上基本都有,这里只是简单地总结一下。思路:1.遍历数组,一一比较,比较到相同的就删除后面的2.遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组3.任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。...

Web前端工程师应该知道的JavaScript使用小技巧

一、数组先来看使用数组中常用的一些小技巧。01、数组去重ES6提供了几种简洁的数组去重的方法,但该方法并不适合处理非基本类型的数组。对于基本类型的数组去重,可以使用...newSet()来过滤掉数组中重复的值,创建一个只有唯一值的新数组。constarray=[1,1,2,3,5,5,1]constuniqueArray=[...newSet(array)];...

Top