Array
1. 如何生成包含100个空元素的数组?
array = new Array(100) // [ empty * 100],每个元素都是undefined
2. 当Array接受两个以上的参数时返回结果是什么?
多参数时,所有的参数都是返回新数组的成员。
3. 在Js中如何实现栈结构?
初始化一个长度为0的数组,使用数组的push方法即入栈,pop方法即出栈,实现了先进后出的栈结构。
4. 如何在一个字符串中每隔一个字符加入一个符号?
利用数组的join方法
str = 'abcd'
arr = Array.from(str)
str = arr.join('-') // 'a-b-c-d'
如果数组中有空字符会被转化为空字符串
5. 如何实现数组的reverse方法
function Reverse(arr) {
if (!Array.isArray(arr)){
console.log('syntex error')
return
}
num = Math.floor(arr.length / 2)
length = arr.length
for(let i = 0; i <= num; i++){
temp = arr[i]
arr[i] = arr[length - 1 - i]
arr[length - 1 - i] = temp
}
return arr
}
6. 数组的slice如果接受的是空参数,返回什么?
如果接受的参数为空则相当于返回与一个原数组的拷贝,并且是深拷贝。
7. splice方法与slice方法的区别?
slice不会改变原数组的结构,而splice会改变原数组
8. 如果想切割数组怎么做?
使用splice方法,如果该方法只接受了一个参数,那么就会从这个参数对应的地方将数组分为两半,会改变原数组结构。
arr = [1, 2, 3, 4, 5]
b = arr.splice(2) // [3, 4, 5] 2 是起始位置,从0开始
a // [1, 2]
9. 如何使用sort来达到排序的效果?
function Sort(arr) {
arr.sort(function (a,b) {
return a-b
})
return arr
}
10. forEach 和 map 方法的区别?
map会返回值,而forEach不会,它只操作数据。
二、String
String对象和Array对象比较类似,很多Array有的属性和方法String也有。
1. charAt取字符串的字符和使用 [index] 取字符的区别在哪?
在字符串中使用中括号取字符和在数组中是一样的,如果index超出范围,那么返回undefined,但是如果使用charAt方法,如果超出范围则会返回空字符 '' 。
2. slice方法和substring方法的区别
首先二者都是String的实例方法,并且两者都能接受两个参数,这两个参数都是字符串的index,但是如果slice方法的参数中有负数,那么会自动将负数加上字符串你的长度,表示倒数第n个的意思,但是substring会自动把负数转为0,并且 还会私自调换两个参数的位置,容易出错。
3. indexOf方法如果返回-1代表什么意思?
indexOf方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配。
'JavaScript'.indexOf('script') // -1
4. trime方法的作用?
trim方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。
' hello world '.trim()
// "hello world"
该方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)。和python中的stripe方法很像啊。。。
5. 字符串的比较
localeCompare方法用于比较两个字符串。它返回一个整数,如果小于0,表示第一个字符串小于第二个字符串;如果等于0,表示两者相等;如果大于0,表示第一个字符串大于第二个字符串。
'apple'.localeCompare('banana') // -1
'apple'.localeCompare('apple') // 0
该方法的最大特点,就是会考虑自然语言的顺序。举例来说,正常情况下,大写的英文字母小于小写字母。而普通的字符串比较大小则是从字符串的第一个字符开始比较Unicode码点的大小。
网友评论