js算法题
//较Low,看到的大神 帮补充
1.给定一个数组:,定义一个函数获取数组中所有的奇数,返回一个新数组;
var arr1=[1,3,4,5,6,7,8,3,4,2,3,6];
function odd(arr){
var newArr=[]
for(var i =0; i<arr.length;i++){
if(arr[i]%2!=0){
newArr.push(arr[i])
}
}
return newArr;
}
console.log(odd(arr1));
//2.给定一个数组:定义一个函数用于获取数组中重复出现次数最多的数; 有一个bug当两个出现次数一样多悲催了
有一个bug当两个出现次数一样多悲催了
var arr2=[1,3,4,5,6,7,8,3,4,2,3,6];
function maxLen(arr2){
var maxLen =0,maxKey; //maxKey最多的哪项 ,最多次数初始值0(保证全遍历);
for(var j = 0;j<arr2.length;j++){
var len=0; //计数 每次循环初始化len值为0;
for(var k=0;k<arr2.length;k++){
if(arr2[k]===arr2[j]){
len++; //每项出现多少次
}
}
if(maxLen<len){
maxLen=len;
maxKey=arr2[j];
};
}
console.log("最多次数的是:"+maxLen+" ,出现了"+maxLen+"次")
}
maxLen(arr2);
3.给定一个数组:按照字段age由大到小进行排序;
var arr3 = [{age:2,id:0},{age:12,id:9},{age:14,id:8},{age:22,id:6}];
objectOrder(arr3,"age"); //调用函数
function objectOrder(arr,pro){ //对象中 按pro大小排序
for(var i = 0;i<arr.length;i++){
for(var j =i+1;j<arr.length;j++){
var temp;
if(typeof(arr[i][pro]) == "undefined"){
alert("格式不符合要求");
return;
}
if(arr[i][pro] < arr3[j][pro]){ //把小的放后面
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
console.log(arr); //输出排过序的arr
}
4.给你一串数字,转换成货币格式,小数点后保留两位,货币前缀由入参决定
问题:变过之后钱缩水了 ······"
"$" + num +".00" 这样才是对等的
var num = "1234567"; //012,345.670
var arr = num.split(""); //Array [ "1", "2", "3", "4", "5", "6", "7" ]
function $currency(num,$){
$ = $ || "¥";
var num = num+"";
var arr = num.split("");
var len = arr.length;
switch(len%3){ //加工数据格式
case 0 : //001.234.56
arr.unshift("0","0");
break;
case 1 : //012.345.67
arr.unshift("0");
break;
default : //两个余数
arr
break;
}
console.log(arr);
var l = Math.floor(arr.length/3);
var s="";
for(var k=0;k<l;k++){
if(k<l-1){
s+=parseInt(arr.splice(0,3).join(""))+","
}else{
s+=parseInt(arr.splice(0,3).join("")) + "."
}
}
console.log($+s+arr.join(""));
}
$currency(num,"¥"); //¥12,345.67