JS--2.4

这篇博客介绍了快速排序算法的实现,通过选取数组中间项作为基准,将数组分为两部分进行递归排序。同时,文章还涉及了JavaScript中数组的方法如`sort()`、`filter()`、`forEach()`,以及箭头函数、回调函数、对象遍历等基础知识。此外,还讨论了DOM操作和元素属性的获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序

let ary = [52,89,56,156,315,165,314,951,65];

/*

思路:先取数组的中间项,比这项大的放到一个数组,比这项小的放一个数组,然后合并;对于这两个数组 再去执行以上操作

*/

function sort(arr){

if (arr.length<=1) return arr;

let midIndex=Math.floor(arr.length/2);

let mid = arr[midIndex];

let left=[],right=[];

for (let i=0;i<arr.length;i++){

if(i !=midIndex){

if(arr[i]>mid){

right.push(arr[i]);

}else{

left.push(arr[i]);

}

}

}

console.log(left,mid,right);

return sort(left).concat(mid,sort(right));

}

console.log(sort(ary));


函数

// 箭头函数虽然没有arguments这个关键字,但是可以通过...剩余运算符来实现这个功能

// 普通函数也能使用剩余运算符

var add = (a,...qqq)=>{

// ... 剩余运算符

// 没有arguments

console.log(qqq);

}

add(1,2,3,4)// 1给a,剩下的给qqq

arr .sort(qq) // 排好的数组

function fn (f){

f&&f(111,222) // f若存在,就让f执行;f 不存在,就不会看后边的代码

}

fn(qq)// 回调函数 可以暂时理解成把一个函数a传给另外一个函数b,那么我们一般把a成为b的回调函数

arr .filter((item,index)=>{

//item 代表数组中的每一项,index是该项对应的索引

})

var a =[1,2,3]

var f=(item,index)=>{

return item>1

}

a.filter(f)

// 返回值是由回调函数执行返回true的那些项组成的新数组

var a = [{Select:rrue},{Select:rrue},{Select:rrue},{Select:rrue}]

arr .forEach(item,index=> {

});

var res1=arr.forEach((item,index)=>{

// item代表数据中的每一项,index是该项对应的索引

})

// replace split slice subString includes indexOf

// toUpperCase toLowerCase chaAt codeAt

// 字符串的所有方法都不会改变原有字符串

console.log();

// 查看每个字母有多少个

var str = 'hjghffghgj';

var obj ={};

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

// 为了获取字符串中的每一项

var key=str[i]// 代表字符串中的每一个字符

if (obj[key]===undefined){

// 证明这个key是第一次出现

obj[key]=1;

}else{

// 不是第一次出现

obj[key]=obj[key]+1;

// 新次数 =老次数+1

}

}

console.log(obj);

// 循环对象 需要使用for in循环;

// 假如 出现次数最多的是0次; 与之对应的字符为''

// 看看谁出现的最多

obj= { q:3, t:5, y:2, a:6, i:3 }

var maxNum = 0,code='';

for(var k in obj){

debugger// 调试程序

if(obj[k]>maxNum){

maxNum = obj[k];

code = k

}

}

// 0到100的和 递归,边界问题


Dom树

<body>

<!-- <div class="box1">

<h2></h2>

<ul>

<li></li>

</ul>

</div>

<div class="box2">

<header>

<span>123</span>

</header>

</div> -->

<div class="box1">

<input type="text"name="hehe">

</div>

<input class="box1"name="hehe">

</body>

</html>

<script>

// 影响布局的 就是回流(重排)回流一定会引起重绘

// 不影响布局的 就是重绘

// document.getElementById()

// [context].getEleementByClassName()// 获取元素集合

// [context] 指的是 获取元素的范围

// [context].getEleementByTagName()

document.querySelectorAll('[name="hehe"]')

let all = document.getElementsByTagName('*')

// 通配 先获取所有的元素,再从这些元素里筛选我们要的目标元素

// 元素 .getAttribute('xxx') 获取元素的行内属性xxx对应的值

function getName( key,value){

let all = document.getElementsByTagName('*')

let res=[];// res创造一个数组,用来存储目标元素

for (let i=0;i<all.length;i++){

all[i].getAttribute(key);

let str=all[i].getAttribute(key);

if(str == value){

// 证明当前这一项是我们想要的

res.push(all [i])

}

}

return res;

}

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值