1.用数组实现输入10个成绩,求总分,最高分,最低分
var arr = new Array(60, 70, 80, 90, 30, 88, 77, 35, 23, 100);
var sum = 0,max=0;min=0;
for (var i = 0; i < 10; i++) {
sum += arr[i];
arr.sort(function(a,b){
return a-b
})
max=arr[9]
min=arr[0]
}
console.log(sum,max,min)
var arr = [86, 45, 72, 39, 44, 77, 98, 87, 67, 59]
var max = 0;
var sum = 0
var min = 100
for (var i = 0; i < arr.length; i++) {
sum = sum + arr[i]//求和
if (arr[i] > max) {
max = arr[i]
}
if (arr[i] < min) {
min = arr[i]
}
}
console.log(sum, max, min);
2.用数组实现 序列:1,2,3,5,8,13...。找出第20个数是多少 ? 得出前20个数之和是多少?
var arr = [], sum = 0, num = 0
for (var i = 0; i < 20; i++) {
if (i < 2) {
num = i + 1
} else {
num = arr[i - 1] + arr[i - 2]
}
arr.push(num)
sum += num
}
console.log(sum, arr);
3.用Date实现 输入2个日期 (年月日),计算两个日期相差多少天?
function inp() {
var date1 = prompt('请按照规定格式输入,例如2020,10,20')
var date2 = prompt('请按照规定格式输入,例如2020,10,20')
var result = sub(date1, date2)
console.log(result);
}
function sub(date1, date2) {
date1 = new Date(date1)
date2 = new Date(date2)
return Math.abs(date1 - date2) / 1000 / 60 / 60 / 24
}
4.输入日期 (年月日)和连接符(可以是 / 或者 - )返回 2019 / 10 / 11 或者 2019 - 10 - 11
function format(s){
var year=prompt('请按照规定格式输入')
var month=prompt('请按照规定格式输入')
var date=prompt('请按照规定格式输入')
return [year,month,date].join(s)
}
console.log(format('-'));
1.猜数字游戏,有一个0 - 100随机数 玩家有5次输入的机会猜,
每次猜一次,都要将结果告诉玩家是小了,还是大了
如果在5次机会内猜中,输出“聪明”,程序结束
如果5次机会用完 程序直接结束。
var num = parseInt(Math.random()*101);
console.log(num)
for(var i=0;i<5;i++){
var arr=prompt('请输入一个数:');
if(arr==num){
console.log('你真是个小机灵鬼');
break;
}else if(arr>num){
alert('猜大了')
}else{
alert('猜小了')
}
}
2.有一个4个长度的数组,每个位置装有0 - 9之间的随机数字,有10次输入的机会来猜每个位置的上的数是什么,
每次猜完4个数字以后都要给出提示,正确几个 错误几个,
只有位置和数字完全正确才算正确,其他情况全视为错误。
var arr = new Array(4)
for (var i = 0; i < arr.length; i++) {
arr[i] = parseInt(Math.random() * 10)
}
console.log(arr);
for (var i = 0; i < 10; i++) {
var ans = new Array(4)
var yesNum = 0, noNum = 0
for (var j = 0; j < arr.length; j++) {
ans[j] = prompt('第' + (i + 1) + '次的第' + (j + 1) + '个')
if (ans[j] == arr[j]) {
yesNum++
} else {
noNum++
}
}
console.log(`正确${yesNum}个,错误${noNum}个`);
if (yesNum == 4) {
console.log('聪明');
break;
}
}
3. 根据双色球摇奖规则,产生6个红球1个蓝球;红球范围1 - 33, 蓝球范围1 - 16. 红球不能有重复的产生。
思路:每次产生一个随机球,存入数组中,下一次产生的随机球,要和数组中的进行比较,如果有相等的,
则重新产生一个号(循环变量要减1),反之继续存入数组;直到产生6个球;蓝球单独产生;最后输出所有球。
var red = [parseInt(Math.random() * 33 + 1)]//先准备一个//20
// 第二个 要跟 第一个 来比较
for (var i = 0; red.length < 6; i++) {//1 2 3
console.log(`第${i + 1}次`);
var num = parseInt(Math.random() * 33 + 1)//21 20 20
if (red.indexOf(num) == -1) {
red.push(num)//[20,21]
}
}
console.log(red);
var blue = parseInt(Math.random() * 16 + 1)
console.log(blue);
1、数组去重[1, 2, 3, 4, 2, 1, 3, 5, 6, 9, 5] 返回出来的结果[1, 2, 3, 4, 5, 6, 9]
var arr = [1, 2, 3, 4, 2, 1, 3, 5, 6, 9, 5];
function show(arr) {
var str = []
for (var i = 0; i < arr.length; i++) {
if (str.indexOf(arr[i]) == -1) {
str.push(arr[i])
}
}
return str
}
console.log(show(arr));
var arr = [1, 2, 3, 1, 2]
var arr2 = arr.sort()//[1,1,2,2,3]
var res = [arr2[0]]
for (var i = 1; i < arr2.length; i++) {
if (arr2[i] != res[res.length - 1]) {
res.push(arr2[i])
}
}
console.log(res);
2、数组排序[1, 2, 3, 4, 2, 1, 3, 5, 6, 9, 5] 返回出来的结果[1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 9]
var arr=[1, 2, 3, 4, 2, 1, 3, 5, 6, 9, 5];
for(var i=0;i<arr.length;i++){
arr.sort()
}
console.log(arr);
var arr = [3, 2, 1, 4, 2, 1]
var temp = 0, count = 0
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
count++
console.log(arr, count);
if (arr[j] > arr[j + 1]) {
temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
console.log(arr);
3、排序后去重
var arr = [1, 2, 3, 4, 2, 1, 3, 5, 6, 9, 5];
arr.sort(function(a,b){
return a-b
})
var str = []
for (var j = 0; j < arr.length; j++) {
if (str.indexOf(arr[j]) == -1) {
str.push(arr[j])
}
}
console.log(str);
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
var arr = [1, 2, 3, 4, 2, 1, 3, 5, 6, 9, 5]
var len = arr.length
for (var i = 0; i < len - 1; i++) {
var j=i+1
for (; j < len - 1; j++) {
if (arr[i] == arr[j]) {
arr.splice(j,1)
}
}
}
console.log(arr);
function removeDuplicates(nums) {
for (var i = 0; i < nums.length; i++) {
if (nums[i] == nums[i + 1]) {
nums.splice(i, 1)
i--
}
}
return nums
}
console.log(removeDuplicates([0, 0, 0, 1, 1, 2, 2, 3, 4]));
5、以数组的第二个字符排序
var arr = ['hello', 'gay', 'blob', 'fyi', 'circle', 'rooom', 'zzz']
function compareSort() {
var newArr = []
for (var i = 0; i < arr.length; i++) {
//{id:e,origin:hello}
//{id:a,origin:gay}
newArr.push({ id: arr[i][1], origin: arr[i] })
}
console.log(newArr);
newArr.sort(function (a, b) {
var x = a.id//e
var y = b.id//a
if (x > y) {
return 1
}
if (x < y) {
return -1
}
return 0
})
console.log(newArr);
var result = []
for (var j = 0; j < newArr.length; j++) {
result.push(newArr[j].origin)
}
console.log(result);
}
compareSort()
1、给定A、B两个数组,同时存在于A、B两个数组中的项称为“交集”;只在A数组中,
且不在B数组中的项称为“差集”编写函数intersection(arr1, arr2)返回两个数组的交集数组;
var arr = [1, 2, 3, 4], arr2 = [3, 4, 5] //3,4
function intersection(arr1, arr2) {
var temp = []
for (var i = 0; i < arr2.length; i++) {
if (arr1.indexOf(arr2[i]) != -1) {
temp.push(arr2[i])
}
}
return temp
}
console.log(intersection(arr, arr2));
var arr = [1, 2, 3, 4], arr2 = [3, 4, 5]
var intersection = arr.filter(function (item) {
return arr2.indexOf(item) > -1
})
console.log(intersection);
2、编写函数difference(arr1,arr2)返回两个数组的差集数组
var arr = [1, 2, 3, 4], arr2 = [3, 4, 5]//1,2,5
var differenceA = arr.filter(function (item) {
return arr2.indexOf(item) == -1
})
var differenceB = arr2.filter(function (item) {
return arr.indexOf(item) == -1
})
console.log(differenceA.concat(differenceB));
3、编写一个二维数组,存储九九乘法表。
var arr=[];
for(var i=1;i<10;i++){
var str=[];
for(var j=1;j<=i;j++){
str.push(i+'*'+j+'='+i*j);
}
arr.push(str)
}
console.log(arr);
4、编写函数flattenArray(arr) ,可以将数组扁平化。数组拉平
例如[1, [2, 3], [4, 5], [6, [7, 8], 9, [[[10, [[11, 12], 13], 14], 15, 16], 17], 18]]
扁平化的结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
var arr = [1, [2, 3], [4, 5], [6, [7, 8], 9, [[[10, [[11, 12], 13], 14], 15, 16], 17], 18]];
var str = arr.toString();
var arr2 = str.split(',');
for (var i = 0; i < arr2.length; i++) {
arr2[i] = parseInt(arr2[i]);
}
console.log(str);
console.log(arr2);
var arr = [1, 2, [3, 4, [5]]]
var temp = []
function flat(list) {
for (var i = 0; i < list.length; i++) {
if (Array.isArray(list[i])) {
flat(list[i])
} else {
temp.push(list[i])
}
}
return temp
}
console.log(flat(arr));
5、编写函数isAnagram(str1, str2)用来检查两个字符串是否互为变位词。变位词指不计顺序的情况下两个单词包含完全相同的字母,
不多不少。比如“silent”和“listen”互为变位词。
function isAnagram(str1, str2) {//abc abc
var arr1 = str1.split('')
var arr2 = str2.split('')
if (arr1.length != arr2.length) {
return
}
for (var i = 0; i < arr2.length; i++) {
if (arr1.indexOf(arr2[i]) == -1) {
return false
} else {
arr1.splice(arr1.indexOf(arr2[i]), 1)
}
}
return arr1.length == 0
}
console.log(isAnagram('abc', 'bcb'));
6、编写函数macrepeat(arr)返回数组中连续出现最多次的项。
例如maxrepeat([1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4])将返回3.
function maxrepeat(arr) {
var obj = {}
for (var i = 0; i < arr.length; i++) {
var char = arr.splice(i, 1).toString()// 拿到 数组的每一个值 并删除第一位
// console.log(char);
obj[char] = obj[char] || 0//把数组出现过的值 当做对象的键 {1:0,2:1}
obj[char]++// 累加计数
i--// 从头开始
}
console.log(obj);
var max = 0
for (var key in obj) {
console.log(key);
if (obj[key] > max) {
max = key
}
}
console.log(max);
}
maxrepeat([1, 1, 2, 3, 3, 3, 4, 5])
console.log(maxrepeat([1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4]));
7、根据数组中每个对象的i属性,由小到大排序如下数组。
var arr = [{ i: 5, v: 1 }, { i: 2, v: 4 }, { i: 3, v: 2 }, { i: 1, v: 5 }, { i: 4, v: 3 }];
var arr = [{ i: 5, v: 1 }, { i: 2, v: 4 }, { i: 3, v: 2 }, { i: 1, v: 5 }, { i: 4, v: 3 }];
function compare(arr) {
return function (a, b) {
var val1 = a[arr];
var val2 = b[arr];
return val1 - val2;
}
}
console.log(arr.sort(compare('i')))
var arr = [{ i: 5, v: 1 }, { i: 2, v: 4 }, { i: 3, v: 2 }, { i: 1, v: 5 }, { i: 4, v: 3 }];
arr.sort(function (a, b) {
return a.i - b.i
})
console.log(arr);
9、利用原生JS实现 数组的翻转 非reverse、
var str = 'hello'
var arr = str.split('')
console.log(arr);
function myreverse(arr) {
for (var i = 0; i < arr.length / 2; i++) {
var temp = arr[i]
arr[i] = arr[arr.length - i - 1]//’dl‘
arr[arr.length - i - 1] = temp
}
return arr.join('')
}
console.log(myreverse(arr));
10.1 - 100任意取10个数 放入数组并排序
var arr = [];
for (var i = 0; i < 10; i++) {
var res = Math.floor(Math.random() * 101 + 1);
arr.push(res);
}
arr.sort(function (a, b) {
return a-b;
});
console.log(arr);
11、请用js计算0 - 10000中0出现的次数
var arr = []
for (var i = 0; i <= 10000; i++) {
var pos = i.toString().split('')//[1,2] [1,3]
pos.map(function (item) {//[1,0]
if (item == 0) {
arr.push(item)
}
})
}
console.log(arr.length);