1.给定一个数组arr=[2,5,7,11],target=9,要求实现数组中的任意元素相加之和等于target并输出下标 返回下标返回到数组中就可以
var arr = [2, 6, 7, 8], target = 9;
function twoSum (arr, target) {
for (i = 0; i < arr.length; i++) {
for (j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] == target) {
return [i, j]
}
}
}
return [-1, -1]
}
var res = twoSum(arr, target);
console.log(res);
在这里封装了一个方法,方法里面利用了两层for循环来遍历数组中的元素,再利用for循环将符合条件的元素选择出来,放到新的数组里面,如果没有符合条件的元素则返回的是【-1,-1】的数组,最后通过调用函数就能得到结果。
2.实现100-1000以内水仙花数
首先我们得知道什么是水仙花数 像这样:百位*百位*百位+十位*十位*十位+个位*个位*个位=水仙花数
var a = 0, b = 0, c = 0;
sum = 0;
count = 0;
for (i = 100; i < 1000; i++) {
a = parseInt(i / 100);
b = parseInt(i % 100 / 10);
c = parseInt(i % 10);
sum = a * a * a + b * b * b + c * c * c
if (sum == i) {
count++;
console.log(i);
}
}
console.log("水仙花的数量为:", count)
这个算法当中先定义三个变量用来分别接收个十百位上的数,还有一个sum用来接收三个位数上的三次幂之和,count用来表示水仙花数的数量
再利用for循环对100-1000之间的数进行遍历,分别得到个位,十位,百位上的数,找到符合条件的输出
3.给出一个字符串 输出最长单词的长度
var str = 'i love china hhhhhhhhh'
var max = 0;
//将字符串的的str转化为数组
var str1 = str.split(" ")
console.log(str1)
for (i = 0; i < str1.length; i++) {
if (str1[i].length > max) {
max = str1[i].length
}
}
console.log(max);
首先利用split()方法中通过空格将字符串转化成由单词组成的数组,因为在数组中单词的长度能够遍历,然后通过for循环遍历数组中每个单词的长度,进行比较将最长的输出。