js算法题
2020-06-01 本文已影响0人
席小丽
1.数组去重
方法一:利用嵌套for循环和splice去重
function arr1(arr){
// 判断换传入的参数是否为数组
if(!Array.isArray(arr)){
console.log('不是一个数组');
return false
}
// 如果是数组,执行如下代码
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
// 如果第一个等于第二个,splice方法删除第二个
if(arr[i] === arr [j]){
arr.splice(j,1);
j --;
}
}
}
return arr
}
let arr_1 = [1, 2, 3, 3, 4, 2, 5, 1,6]; // [1, 2, 3, 4, 5, 6]
方法二:利用indexOf去重
function arr2(arr){
// 判断传入的参数是否为数组
if(!Array.isArray(arr)){
console.log('不是一个数组');
return false
}
// 如果是数组,执行如下代码
let array = [];
for(let i=0;i<arr.length;i++){
if(array.indexOf(arr[i]) == -1){
array.push(arr[i])
}
}
return array
}
let arr_2 = [1, 2, 3, 3, 4, 2, 5, 1,6]; // [1, 2, 3, 4, 5, 6]
方法三:利用Set集合的特性去重
function arr3(arr){
return Array.from(new Set(arr))
}
let arr_3 = [1, 2, 3, 3, 4, 2, 5, 1,6]; // [1, 2, 3, 4, 5, 6]
方法四:利用filter
function arr4(arr){
return arr.filter((val,index,item) => {
return item.indexOf(val) === index;
})
}
let arr_4 = [1, 2, 3, 3, 4, 2, 5, 1,6]; // [1, 2, 3, 4, 5, 6]
方法五:利用includes
function arr5(arr){
if(!Array.isArray(arr)){
console('不是一个数组');
return
}
var array = [];
for(var i=0;i<arr.length;i++){
if(!array.includes(arr[i])){ //includes 检测数组是否有某个值
array.push(arr[i])
}
}
return array
}
let arr_5 = [1, 2, 3, 3, 4, 2, 5, 1,6]; // [1, 2, 3, 4, 5, 6]
2.统计字符串中出现最多的字符及其出现的次数
function str(str){
var json = {};
for(var i=0;i<str.length;i++){
if(!json[str.charAt(i)]){
json[str.charAt(i)] = 1;
}else{
json[str.charAt(i)] ++;
}
}
var isMax = 0; // 次数
var isKey = ''; // 出现最多的字母
for(var key in json){
if(json[key] > isMax){
isMax = json[key]
isKey = key
}
}
console.log('出现次数最多的是:' + isKey + ',出现' + isMax + '次') // 出现次数最多的是:5,出现13次
}
str('12555552555663399582555512');
3.判断一个单词是否是回文
function fn(str){
// split 把一个字符串分割成字符串数组 (字符串转数组)
// reverse 用于跌倒数组元素顺序
// join 把数组中中所有元素放在字符串中 (数组转成字符串)
return str === str.split('').reverse().join('');
}
fn(‘nodeedon’'); // true
4. 九九乘法表
for(var i = 1; i < 10; i++){
for(var j = i; j > 0; j--){
var num1 = j*i;
var num2 = j + 'x' + i + '=' + num1
console.log(num2)
}
}