JS数组练习题
1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么
// 第一种
/* var arr1=[];
var bool=false;
var str="";
var num=0;
for(var i=0;i<4;i++){
arr1[i]=parseInt(Math.random()*10);
if((arr1[i]===0 && bool) ||arr1[i]!==0){
str+=arr1[i];
num++;
bool=true;
}
}
console.log(arr1,str,num)*/
// 第二种
var arr1=[];
var bool=false;
for(var i=0;i<4;i++){
var s=parseInt(Math.random()*10);
if(s===0 &&!bool) continue;
arr1.push(s);
bool=true;
}
var num=Number(arr1.join(""));
console.log(arr1,arr1.length,num)
2.var data=[
{id:1001,icon:“img/1.png”,name:“餐饮0”,num:1,price:10},
{id:1002,icon:“img/2.png”,name:“餐饮1”,num:1,price:20},
{id:1003,icon:“img/3.png”,name:“餐饮2”,num:1,price:30},
{id:1004,icon:“img/4.png”,name:“餐饮3”,num:1,price:40},
{id:1005,icon:“img/5.png”,name:“餐饮4”,num:1,price:50},
{id:1006,icon:“img/6.png”,name:“餐饮5”,num:1,price:60},
{id:1007,icon:“img/7.png”,name:“餐饮6”,num:1,price:70},
{id:1008,icon:“img/8.png”,name:“餐饮7”,num:1,price:80},
{id:1009,icon:“img/9.png”,name:“餐饮8”,num:1,price:90},
{id:1010,icon:“img/10.png”,name:“餐饮9”,num:1,price:100}
];
生成表格
<style>
table{
border-collapse: collapse;
}
td,th{
border:1px solid black;
width:100px;
height:30px;
line-height: 30px;
text-align:center;
}
tr{
height:30px;
}
</style>
<script>
var table="<table>";
table+="<tr>";
for(var prop in data[0]){
table+="<th>"+prop+"</th>";
}table+="</tr>";
for(var i=0;i<data.length;i++){
table+="<tr>";
var obj=data[i];
for(var key in obj){
table+="<td>"+obj[key]+"</td>";
}
table+="</tr>"
}
document.write(table);
</script>
3.var arr4=[1,4,7,0,2,5,8,3];
排序 ,
1.从大到小循环,里面嵌套从小到大循环,比较当前位置和下一位谁小,当前小,就做交换
冒泡排序
for(var j=arr.length;j>0;j--){
for(var i=0;i<arr.length-1;i++){
if(arr[i]<arr[i+1]){
var temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
2.循环数组,记录当前的下标,里面再嵌套一层循环,从当前的下一位开始循环到尾部
比较每个数值和当前记录下标的数值谁小,每次把小的下标存在一个变量中,不断替换
最后变量就是最小的,把当前数据和最小的数据做交换
选择排序
for(var j=0;j<arr.length;j++){
var min=j;
for(var i=min+1;i<arr.length;i++){
if(arr[min]<arr[i]){
min=i;
}
}
var temp=arr[j];
arr[j]=arr[min];
arr[min]=temp;
}
4.var arr1=[1,3,5,2,1,4,3,1,2,5,3,1,2,1]; (var prop in obj){
至少用2种方法去重
var arr1=[1,3,5,2,1,4,3,1,2,5,3,1,2,1];
var arr2=[];
for(var i=0;i<arr1.length;i++){
var bool=false;
for(var j=0;j<arr2.length;j++){
if(arr2[j]===arr1[i]){
bool=true;
break;
}
}
if(!bool){
arr2.push(arr1[i]);
}
}
arr1=arr2.slice();
arr2=null;
console.log(arr1)
var arr2=[];
for(var i=0;i<arr1.length;i++){
if(arr2.indexOf(arr1[i])===-1){
arr2.push(arr1[i]);
}
}
arr1=arr2.slice();
arr2=null;
console.log(arr1)
5.统计上一题种每个元素的出现次数
<script>
var arr1=[1,3,5,2,1,4,3,1,2,5,3,1,2,1];
var obj={};
for(var i=0;i<arr1.length;i++){
var value=arr1[i];
if(!obj[value]){
obj[value]=1;
}else{
obj[value]++;
}
}
console.log(obj)
</script>
6.山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。
问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。
<script>
var water = 15;
var i = 0;
while (water < 50) {
water += 5;
i++;
}
console.log(i)
</script>
7.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;
然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。
var arr=[];
for(var i=0;i<60;i+=2){
arr.push(i);
}
var arr2=[];
for(var i1=0;i1<arr.length;i1++){
var sum=0;
for(var j=i1;j<i1+5;j++){
if(!arr[j] && arr[j]!==0) break;
sum+=arr[j];
}
arr2.push(sum/(j-i1));
}
console.log(arr,arr2)