1.判断一段字符串是否为回文?
回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 abba,redder…
1.字符串转数组;2.用reverse()函数颠倒;3.使用join(’’)拼接成字符串
function reverseFn( str ) {
return str == str.split(',').reverse().join('')
}
2.数组去重
1.直接双重遍历
var arr = [1,2,3,3,4,3,5,3,7,5];
function removeRepetition(arr) {
for(var i = 0; i < arr.length-1; i++){
for(var j = i+1; j < arr.length; j++){
if(arr[i]==arr[j]){
arr.splice(j,1);//console.log(arr[j]);
j--;
}
}
}
return arr;
}
2.用indexOf()方法
var arr = [1,2,3,3,4,3,5,3,7,5];
var arr1 = [];
function removeRepetition(arr) {
for(var i = 0;i < arr.length; i++) {
if(arr1.indexOf(arr[i]) == -1){
arr1.push(arr[i])
}
}
return arr1;
}
3.用fifter方法
var arr = ['apple','strawberry','banana','pear','apple','orange','orange','strawberry'];
var r = arr.filter(function(element,index,self){
return self.indexOf(element) === index;
});
console.log(r);
4.使用ES6的Set
const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);
3.对象去重
var arr = [{
key: '01',
value: '乐乐'
}, {
key: '02',
value: '博博'
}, {
key: '03',
value: '淘淘'
},{
key: '04',
value: '哈哈'
},{
key: '01',
value: '乐乐'
}];
var result = [];
var obj = {};
for(var i =0; i
4.统计一个字符串出现最多的字母
var str = "aaabbbbccc";
function findMaxDuplicateChar(str) {
if(str.length == 1) {
return str;
}
let charObj = {};
for(let i=0;i= maxValue) {
maxChar = k;
maxValue = charObj[k];
}
}
return maxChar;
}
findMaxDuplicateChar(str)
5.排序算法
function bubbleSort(arr) {
for(let i = 0,l=arr.length;iarr[j]) {
let tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
return arr;
}
6.判断js中的数据类型方法
js中共有七种数据类型 ES6新增Symbo,其中除去 undefined; null ; 0 ; NaN; ’ ';为false 其他都为 true
1)typeof 方法
var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
console.log(n)
}
console.log(typeof obj) // object
console.log(typeof arr) // object
console.log(typeof str) // string
console.log(typeof bool) // boolean
console.log(typeof num) // number
console.log(typeof n) // object
console.log(typeof fn) // function
由上可知,typeof方法 不能区分 Array 和 Object
2) instanceof
var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
console.log(n)
}
console.log(obj instanceof Object) // true
console.log(arr instanceof Array) // true
console.log(str instanceof String) // false
console.log(bool instanceof Boolean) // false
console.log(num instanceof Number) // false
console.log(n instanceof Object) // false
console.log(fn instanceof Function) // true
由上可知,instanceof 方法只能判断 Object 和 Array 原始数据类型的值无法判断
此方法也不能很好地区分Array和Object
var arr = [1,2,3,4];
arr.instanceof Object
此结果也为true
3) constructor 方法
var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
console.log(n)
}
console.log(obj.constructor == Object) // true
console.log(arr.constructor == Array) // true
console.log(str.constructor == String) // true
console.log(bool.constructor == Boolean) // true
console.log(num.constructor == Number) // true
console.log(fn.constructor == Function) // true
4) toString() 方法
var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
console.log(n)
}
console.log(Object.prototype.toString.call(obj)) // [object Object]
console.log(Object.prototype.toString.call(arr)) // [object Array]
console.log(Object.prototype.toString.call(str)) // [object String]
console.log(Object.prototype.toString.call(bool)) // [object Boolean]
console.log(Object.prototype.toString.call(num)) // [object Number]
console.log(Object.prototype.toString.call(n)) // [object Null]
console.log(Object.prototype.toString.call(fn)) // [object Function]
推荐使用 toString() 方法!