冒泡排序
function bubble(arr) {
for(var i=0;i<arr.length;i++){
for(j=0;j<arr.length-i-1;j++){
if(arr[j]> arr[j+1]){
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
return arr;
}
bubble([9,4,2,3,8,0])
快速排序
// 在数组中指定一个元素为标尺,比它大的放在该元素后面,比它小的放在该元素前面,
// 返回的左边和右边组成的数据再次递归调用,重复至全部正序排列
function quickSort(arr) {
if(arr.length<=1) return arr;
var left=[],
right=[];
var temp = Math.floor(arr.length/2);
var tempItem = arr.splice(temp,1)[0];
// console.log(tempItem)
//console.log('arr:'+arr)
for(var i=0;i<arr.length;i++){
if(arr[i]>tempItem){
right.push(arr[i])
//console.log('right:'+right)
}else{
left.push(arr[i])
//console.log('left:'+left)
}
}
return quickSort(left).concat([tempItem],quickSort(right));
}
console.log('result:'+quickSort([9,1,3,7,2,4,5]))
quickSort([9,1,3,7,2,4,5])
九九乘法表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
text-align: center;
}
.item{
display: inline-block;
border: 1px solid #eee;
padding: 5px 10px;
width: 51px;
height: 17px;
margin-bottom: -1px;
margin-right: -1px;
}
</style>
</head>
<body>
<script>
document.write('<div class="box">')
for(var i=1;i<=9;i++){
document.write('<div>')
for(var j=1;j<=i;j++){
document.write('<span class="item">'+i+'x'+j+'='+i*j+'</span>')
}
document.write('</div>')
}
document.write('</div>')
</script>
</body>
</html>
二进制数相加
function addBinary(str1,str2) {
// 反转字符串并分割为数组,再逐个相加
var arr1 = str1.split('').reverse();
var arr2 = str2.split('').reverse();
var [alength,blength,carry,result]=[arr1.length,arr2.length,0,[]];
var lenMax = Math.max(alength,blength)
// 取最大的长度进行遍历,以保证都相加到
for(var i=0;i<lenMax;i++){
// 每一项值为对应数组相加,再加上进位值
// 括号前面加加号,表示类型转换,转换不了就置为0
var itemSum = +(arr1[i] || 0)+ +(arr2[i] || 0) +carry;
console.log(itemSum)
if(itemSum === 0) {
result[i]=0;
carry = 0
}else if(itemSum === 1) {
result[i] = 1;
carry = 0;
}else if(itemSum === 2) {
result[i]=0;
carry=1;
}else{
result[i]=1;
carry=1;
}
}
// 若高位发生进位则插入1
if(carry === 1) result.push(1);
console.log(result.reverse().join(''))
return result.reverse().join('')
;
}
addBinary('11','01')
删除数组中所有假值
// 删除数组中所有的假值,在JavaScript中,假值有false,null,0,“”,undefined,和NaN
// 可以通过过滤函数,过滤这些假值,条件为正,则返回
function deletDate(arr){
return arr.filter(test)
}
function test(item){
var count = item !==false || item !==null || item !==0 || item !=="" || item !== undefined || item !== NaN ;
if(count){
return item;
}
}
console.log(deletDate([12,undefined,null,0,true,false,NaN,90,"","number"]))
判断是否为回文数
function isHuiwenshu(str) {
var str1 = str.split("").reverse().join("")
// console.log(str1)
if(str === str1){
return true;
}else{
return false;
}
}
console.log(isHuiwenshu('abc123321cba'))
isHuiwenshu('abc123321cba')
让所有首字母大写
// 确保单词的所有首字母大写,剩下的小写
function strFirstUpper(str){
var arr = str.split(" ");
for(var i=0;i<arr.length;i++){
arr[i] = arr[i].substring(0,1).toUpperCase()+arr[i].substring(1).toLowerCase()
}
arr = arr.join(' ')
console.log(arr)
return arr;
}
strFirstUpper('hello world ! lala ye hao de')
去重后升序排列
// 去掉数据中重复项,再按升序排列
function unique(arr) {
/* var result=[]
for(var i=0;i<arr.length;i++){
if(result.indexOf(arr[i]) === -1){
result.push(arr[i])
}
}*/
var result = [...new Set(arr)]
result.sort(function(a,b){return a-b})
console.log(result);
return result;
}
unique([1,6,9,9,0,10,2,2,3,4,4,5])
将数组截成指定size的子数组
function madeNewArr(arr,size) {
var result = []
while(arr.length>size){
arr1 = arr.slice(0,size);
// console.log(arr1)
arr =arr.slice(size);
result.push(arr1) ;
// console.log(result);
if(arr.length<size){
result.push(arr);
}
}
console.log(result);
return result;
}
madeNewArr([1,2,3,4,4,5,6,7,7,8,8],4)
找到句子中最长的单词并计算长度
function findLength(str){
var arr = str.split(" ");
console.log(arr);
var result = arr.sort(function(a,b){return b-a});
var r ='最长的单词为:'+result[0]+'长度为:'+result[0].length;
console.log(r);
return r;
}
findLength('hello world !')
找到子数组中最大值,组成新数组
// 一个大数组中包含4个小数组,分别找到每个小数组中的最大值,,然后把它们串联起来组成新的数组
function madeNewArr(arr){
var result=[]
for(var i=0;i<arr.length;i++){
result.push(Math.max.apply(null,arr[i]))
}
console.log(result)
return result
}
madeNewArr([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
第一个字符串中是否包含第二个字符串中所有字符
// 一个数组中,第一个字符串中包含第二个字符串中所有的
function isInclude(arr) {
var str1 = arr[0].toLowerCase();
var str2 = arr[1].toLowerCase()
for(var i=0;i<str2.length;i++){
if(str1.indexOf(str2[i]) === -1){
// 如果str2中存在str1中没有的字符串则会返回false
return false;
}
}
return true
}
console.log(isInclude(['hello','hehe']))
isInclude(['hello','hehe'])
数组按低-高-低排列
//给一个数组arr,进行排序,按照从低到高在从高到低进行排列
// 分析,如果这个数组能被2整除,则直接分为两部分,第一部分按照从小到大排序,第二部分按照从大到小排序
// 如果这个数组不能被2整数,为奇数,则先找出那个最大值,取出后,再按照上面的进行排序
function sortlowtoheighttolow(arr) {
var newarr=[]
if((arr.length)%2===0) {
var arr1 = arr.slice(0,arr.length/2).sort(function(a,b) {return a-b});
var arr2 = arr.slice(arr.length/2).sort(function(a,b) {return b-a});
console.log(newarr.concat(arr1,arr2))
return newarr.concat(arr1,arr2)
}else {
var max = Math.max.apply(null,arr)
var index = arr.indexOf(max);
arr.splice(index,1);
var arr1 = arr.slice(0,arr.length/2).sort(function(a,b){return a-b});
var arr2 = arr.slice(arr.length/2).sort(function(a,b){return b-a});
console.log(newarr.concat(arr1,max,arr2))
return newarr.concat(arr1,max,arr2);
}
}
sortlowtoheighttolow([1,4,5,6,3,9,12])
统计字符串中出现最多的字母
// 先设置一个对象分别记录字符串中字母出现的次数,在遍历字符串中每个字母时,找到对应的最大值,并使用一个变量保存
function maxstr(str) {
var temp={};
var max=1;
for(var i=0;i<str.length;i++){
if(!temp[str[i]]){
temp[str[i]] =1;
}else{
temp[str[i]] =temp[str[i]]+1;
}
if(temp[str[i]]>max){
max=temp[str[i]]
maxstrs = str[i]
}
}
console.log(maxstrs ,' :'+ max)
return maxstrs;
}
逗号隔开n个字符串
// 给定一个字符串,每个n个就隔开组成一个数组
function strTonewArr(str,n) {
var result = [];
while(str.length>n){
var str1 = str.substring(0,n)
str = str.substring(n);
result.push(str1)
if(str.length<=n){
result.push(str)
}
}
console.log(result)
return result;
}
strTonewArr('hello1234567890eeeeeeeqw1',4)
后续有时间再继续整理。。。