简单算法
1.找出字符串中第一个只出现一次的字母
var str = 'eerrtrefffp'
function fun(str) {
var arr = [], arr1 = []
arr = str.split('')
arr.forEach(function (item) {
var jj = str.split(item);
var num = str.split(item).length - 1
})
if (!arr1.length == 0) {
console.log(arr1[0])
} else {
console.log('没有符合条件的值')
}
}
fun(str)
2.根据数组arrA对新数组进行排序
var arrA = ['one', 'two', 'three', 'four'];
var new_array = ['three', 'one', 'four'];
for (item of arrA) {
var idx = new_array.indexOf(item);
if (idx != -1) {// 找到的情况
new_array.splice(idx, 1); // 先删除该元素
new_array.push(item);// 再从尾部追加进去
}
}
console.log(new_array);
3.用递归的方式求1-100的和
function add (sum,start) {
sum+=start;
start++;
if(start > 100) {
console.log(sum);
return sum;
}
else {
add(sum,start);
}
}
add(0,1)
4。数组的并交差集
let a = [101,201,601,201]
let b = [201,301,801]
并集
let arr = a.concat(b);
let result = [...new Set(arr)] // 去重
console.log(result);
交集
let intersection = a.filter(v => b.includes(v)) // [201]
let result = [...new Set(intersection)] // 去重
console.log(result);
差集
let result = a.concat(b).filter(v => !a.includes(v) || !b.includes(v))
console.log(result);
5.给你一个整数 x ,如果x 是一个回文整数,返回 true ;否则,返回 false
var isPalindrome = function(x) {
let num1 = x.toString();
let num2 = num1.split("").reverse().join("");
// split() 是字符串的方法,将字符串转成字符串数组 ['1','2','3']
// reserve() 是数组的方法, 将数组进行翻转为 ['3','2','1']
// join() 是数组方法, 将数组变为字符串 "321"
if(num1 === num2) {
return true
}else {
return false
}
};
console.log(isPalindrome(123))
中等算法
1.版本号比较
比较一组版本号,将其按从小到大的顺序排列(注意不要更改原数组的顺序)
const versions = ["2.1.0", "1.5", "2", "1.1.999.1.2.3", "0.10.0"];
function versionSort(versions) {
let vAfterSplit = []; // 这是个二维数组
for (let i = 0; i < versions.length; i++) {
vAfterSplit.push(versions[i].split('.'));
}
console.log(vAfterSplit);
//排序
vAfterSplit.sort();
console.log(vAfterSplit);
//将二维数组中的每个元素拼接回去,然后返回
let ret = []; // 这个是个一维数组
for (v of vAfterSplit) {
ret.push(v.join('.'));
}
return ret;
}
console.log(versionSort(versions));