前端关于JavaScript面试题(九)

115.jquery有几种类型的选择器
一、基本选择器(5)

基本选择器是jQuery中最常用也是最简单的选择器,它通过元素的id、class和标签名等来查找DOM元素。

1ID选择器 #id
描述:根据给定的id匹配一个元素, 返回单个元素(注:在网页中,id名称不能重复)
示例:$("#test") 选取 id 为 test 的元素

2、类选择器 .class
描述:根据给定的类名匹配元素,返回元素集合
示例:$(".test") 选取所有class为test的元素

3、元素(标签)选择器 element
描述:根据给定的元素名匹配元素,返回元素集合
示例:$("p") 选取所有的<p>元素 $("div") :选取所有的div标签

4*
描述:匹配所有元素,返回元素集合
示例:$("*") 选取所有的元素

5、selector1,selector2,...,selectorN(并集选择器)
描述:将每个选择器匹配到的元素合并后一起返回,返回合并后的元素集合
示例:$("p,span,p.myClass") 选取所有<p>,<span>class为myClass的<p>标签的元素集合

二、层次选择器(4)

层次选择器根据层次关系获取特定元素。

1、后代选择器 
示例:$("p span") 选取<p>元素里的所有的<span>元素(注:后代选择器选择父元素所有指定选择的元素,不管是儿子级,还是孙子级)

2、子选择器 $("parent>child")
示例:$("p>span") 选择<p>元素下的所有<span>元素 (注:子选择器只选择直属于父元素的子元素)

3、兄弟选择器 $("prev+next")
描述:选取紧接在prev元素后的next元素,返回元素集合
示例:$(".one+p") 选取class为one的下一个<p>同辈元素集合

4、兄弟选择器 $("prev~siblings")
描述:选取prev元素后的所有siblings元素,返回元素集合
示例:$("#two~p")选取id为two的元素后所有<p>同辈元素集合

三、过滤选择器(5)
1基本过滤选择器

1:first
描述:选取第一个元素,返回单个元素
示例:$("p:first") 选取所有<p>元素中第一个<p>元素
2:last
描述:选取最后一个元素,返回单个元素
示例:$("p:last") 选取所有<p>元素中最后一个<p>元素
3:not(selector)
描述:去除所有与给定选择器匹配的元素,返回元素集合
示例:$("input:not(.myClass)") 选取class不是myClass的<input>元素
4:even
描述:选取索引是偶数的所有元素,索引从0开始,返回元素集合
5:odd
描述:选取索引是奇数的所有元素,索引从0开始,返回元素集合
6:eq(index)
描述:选取索引等于index的元素,索引从0开始,返回单个元素
7:gt(index)
描述:选取索引大于index的元素,索引从0开始,返回元素集合
8:lt(index)
描述:选取索引小于于index的元素,索引从0开始,返回元素集合
9:focus
描述:选取当前获取焦点的元素

2、内容过滤选择器

1:contains(text)
描述:选取含有文本内容为text的元素,返回元素集合
示例:$("p:contains('我')") 选取含有文本“我”的元素
2:empty
描述:选取不包含子元素或者文本元素的空元素,返回元素集合
示例:$("p:empty") 选取不包含子元素或者文本元素的空<p>元素(<p></p>3:has(selector)
描述:选取含有选择器所匹配的元素的元素,返回元素集合
示例:$("p:has(p)") 选取含有<p>元素的<p>元素(<p><p/></p>4:parent
描述:选取含有子元素或者文本的元素,返回元素集合
示例:$("p:parent") 选取含有子元素或者文本元素的<p>元素(<p><p/></p>或者<p>文本</p>3、可见性过滤选择器

1:hidden
描述:选取所有不可见的元素,返回元素集合
2:visible
描述:选取所有可见的元素,返回元素集合

4、属性过滤选择器(返回元素集合)

1[attribute]
示例:$("p[id]") 选取拥有id属性的p元素
2[attribute=value]
示例:$("input[name=text]") 选取拥有name属性等于text的input元素
3[attribute!=value]
示例:$("input[name!=text]") 选取拥有name属性不等于text的input元素
4[attribute^=value]
示例:$("input[name^=text]") 选取拥有name属性以text开始的input元素
5[attribute$=value]
示例:$("input[name$=text]") 选取拥有name属性以text结束的input元素
6[attribute=value]
示例:$("input[name=text]") 选取拥有name属性含有text的input元素
7[attribute~=value]
示例:$("input[class~=text]") 选取拥有class属性以空格分割的值中含有text的input元素
8、attribute1[attributeN]
描述:合并多个属性过滤选择器

5、表单对象属性过滤选择器(返回元素集合)

1:enabled
描述:选取所有可用元素
2:disabled
描述:选取所有不可用元素
3:checked
描述:选取所有被选中的元素(单选框,复选框)
示例:$("input:checked") 选取所有被选中的<input>元素
4:selected
描述:选取所有被选中的选项元素(下拉列表)
示例:$("select option:selected") 选取所有被选中的选项元素

四、表单选择器(返回元素集合,使用相似)

1:text
描述:选择所有的单行文本框
示例:$(":text")选取所有的单行文本框
2:password
描述:选择所有的密码框
3:button
描述:选择所有的按钮
4:checkbox
描述:选择所有的多选框
116.将两个数合并,并删除第二个元素
var array1 = ['a','b','c'];
var array2 = ['d','e','f'];

数组合并

(1)js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。
var array = array1.concat(array2)

(2)遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。
for(var i in array1){
	array2.push(array1[i])
}

(3)利用ES6语法
var array = [...array1,...array2]

(4)函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组
  调用a.push这个函数实例的apply方法,同时把,b当作参数传入,
  这样a.push这个方法就会遍历b数组的所有元素,达到合并的效果。
 array1.push.apply(array1,array2);

删除第二个元素

(1)array.splice(1,1)    
//array.splice(1,1,5,6)表示在删除的位置添加元素5,6

(2)delete array[1]
//只会删除了第二个元素,但是在其位置会显示empty,索引不会改变
117.请写出一下数组相关方法的值
['a','b'].filter(x=>true)          	 //['a','b']
['a','b'].every(x=>x==='a')    		 //false
['a','b'].some(x=>x==='a')    		 //true
[1,2].reduce((x,y)=>x+y)       		 //3
[1,2].map(x=>x+1)             		 //[2,3]
['a',...['a','b']]			 		//["a", "a", "b"]
new Array(3).fill("a")        		 //["a", "a", "a"]
['a','b','c'].findIndex(x=>x==='c')   // 2
118.GET和POST的区别,何时使用POST?
1.GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
2.POST:一般用于修改服务器上的资源,对所发送的信息没有限制。
3.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,
也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。
4.在以下情况中,请使用 POST 请求:
	无法使用缓存文件(更新服务器上的文件或数据库)
	向服务器发送大量数据(POST 没有数据量限制)
	发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

119.说说 async / await 的串行和并行
//async和await是es6中的新语法,它的诞生彻底解决了JS回调地狱的问题,在这个语法中,我们可以省去以往的promise语法中.then()的写法async修饰的方法有两个作用:
1.该方法中可以使用await
2.该方法需要返回一个promise

await可以出现在async修饰的方法中,他的意思表示等待异步任务的执行完毕,
await后面需要跟一个promise

比如下面的例子:
async function request1(){
    let result1 = await axios("http://localhost:8888/aa")
    let result2 = await axios("http://localhost:8888/bb")
}
async function request2(){
    let result3 = await axios("http://localhost:8888/cc")
    let result4 = await axios("http://localhost:8888/dd")
}
request1();
request2();
//此时request1() 和 request2()这两个方法是并行执行的,request1的执行并不会堵塞当前线程
//而request1中的两个请求是串行执行的,也就是先必须拿到result1的结果后才能继续获取到result2的结果

因此async/await的结合使用,可以将原来并行执行的异步任务改为串行执行,
从而彻底解决js的回调地狱的问题
120.数组求最大值 :var arr=[45,2,3,4,10,8],用es6求最大值?
var arr = [45,2,3,4,10,8];
var max = arr.reduce(function(a , b){ 
    return b > a ? b : a; 
});
console.log(max); 

//reduce:让数组中的前项和后项做某种计算,并累计最终值.
121.用代码实现下面数组以num的值的大小重新排列,并返回一个新的数组
let arr = [
    {num:23},
    {num:100},
    {num:3},
    {num:56}
]

sort()方法 最简单

let arr = [
    { num: 23 },
    { num: 100 },
    { num: 3 },
    { num: 56 }
]  

function compare(val1, val2) {
    return val1.num - val2.num;
};
arr.sort(compare);
console.log(arr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值