JavaScript数组
//第一种声明
var arr1 = [1, 2, 3]
console.log(arr1)
//第二种声明
var arr2 = new Array(10) //length为10
console.log(arr2.length);
//遍历
var arr1 = [1, 2, 3]
//普通遍历数组arr1
for (var i = 0; i < arr1.length; i++) {
console.log(arr1[i])
}
//for in遍历arr1 (下标 迭代器 next)
for (var index in arr1) {
console.log(arr1[index])
}
//for of遍历arr1 (迭代器实现) 只能数组 对象包含数组
for (var value of arr1) {
console.log(value)
}
//下标访问可以用字符arr[0] = arr['0']
//给数组里面的元素随机给值
var arr0 = new Array()
for (var i = 0; i < 10; i++) {
arr0[i] = Math.random() //0-1 包含0 不包含1
}
console.log(arr0);
// 1, 求数组中所有元素的和
function fn1(a, b, c, d) {
var arr1 = new Array(a, b, c, d)
var sum = 0;
for (var i = 0; i < arr1.length; i++) {
sum += arr1[i]
}
return sum
}
console.log(fn1(1, 2, 3, 4));
// 2, 让数组中的元素交换位置(重要)
var arr2 = [1, 2, 3, 4, 5]
console.log(arr2);
arr2.reverse()
console.log(arr2);
for (var i = 0; i < arr2.length / 2; i++) {
tmp = arr2[i];
arr2[i] = arr2[arr2.length - 1 - i]
arr2[arr2.length - 1 - i] = tmp
}
console.log(arr2)
// 3, 求数组的最大数和最小数(重要)
var arr3 = [1, 2, 3, 4, 5, 10]
var max = -Infinity, min = +Infinity;
for (var index in arr3) {
if (max < arr3[index]) {
max = arr3[index]
}
if (min > arr3[index]) {
min = arr3[index]
}
}
console.log(arr3);
console.log("最大值=" + max);
console.log("最小值=" + min);
// 4, 求数组的最小数的下标(重要)
var arr4 = [1, -5, -10, 1]
var min = +Infinity;
var minIndex = 0;
for (var index in arr4) {
if (min > arr4[index]) {
min = arr4[index]
minIndex = index
}
}
console.log(arr4);
console.log("最小值为:" + min);
console.log("其下标为:" + minIndex);
// 练习:
// 1, 不改变原数组, 取出数组[3, 2, 4, 5, 8, 6, 3, 9]中的[5, 8, 6].
var arr1 = [3, 2, 4, 5, 8, 6, 3, 9]
var newArr = arr1.slice(3, 6)
console.log(arr1);
console.log(newArr);
// 2, 在数组[1, 2, 3, 4, 6, 7, 8]中对应的位置插入5, 变成[1, 2, 3, 4, 5, 6, 7, 8]
var arr2 = [1, 2, 3, 4, 6, 7, 8]
arr2.splice(4, 0, 5)
console.log(arr2);
// 3, 将数组["我", "是", "一", "只", "笨", "鸟"] 改成["我", "是", "一", "只", "聪", "明", "鸟"], 并打印出: "我是一只聪明鸟"
var arr3 = ["我", "是", "一", "只", "笨", "鸟"]
arr3.splice(4, 1, "聪", "明")
var newArr = arr3.join('')
console.log(arr3);
console.log(newArr);
// 4, 删除数组[20, 23, 21, 34, 54, 55, 32]中的倒数第二个和倒数第三个元素
var arr4 = [20, 23, 21, 34, 54, 55, 32]
arr4.splice(arr4.length - 3, 2)
console.log(arr4);
// 练习:
// 1, 将数组[1, 5, 6, 3, 2, 8, 9, 4] 降序排序
var arr1 = [1, 5, 6, 3, 2, 8, 9, 4]
arr1.sort(function (a, b) { return b - a })
console.log(arr1);
// 2, 请将数组[1, 46, 74, 3, 5, 5]中的元素右移1位
var arr2 = [1, 46, 74, 3, 5, 5]
arr2.splice(0, 0, null)
console.log(arr2);
// 3, 插数: 在数组[1, 46, 74, 3, 5, 5]的下标为2的位置插入一个数字8,
// 结果为[1, 46, 8, 74, 3, 5, 5]
var arr3 = [1, 46, 74, 3, 5, 5]
arr3.splice(2, 0, 8)
console.log(arr3);
// 1, 冒泡排序自己写一遍.[1, 46, 8, 74, 3, 5, 5]
var arr1 = [1, 46, 8, 74, 3, 5, 5]
for (var j = 0; j < arr1.length - 1; j++) {
for (var i = 0; i < arr1.length - 1 - j; i++) {
if (arr1[i] > arr1[i + 1]) {
var tmp = arr1[i]
arr1[i] = arr1[i + 1]
arr1[i + 1] = tmp
}
}
}
console.log(arr1);
// 2, 给定一个含有n个元素的整型数组a,求a中所有元素的和
function fn2(a) {
var sum = 0
for (var i = 0; i < a.length; i++) {
sum += a[i]
}
return sum
}
var a = [1, 2, 3, 4, 5]
console.log(fn2(a));
// 3, 给定一个含有n个元素的整型数组a,打印其中的最大值和最小值.
function fn3(a) {
var max = -Infinity, min = +Infinity;
for (var index in a) {
if (max < a[index]) {
max = a[index]
}
if (min > a[index]) {
min = a[index]
}
}
console.log("数组中最大值为:" + max);
console.log("数组中最小值为:" + min);
}
var a = [3, -15, 0, 5, 100, 11]
fn3(a)
// 4, 给定一个不存在重复元素的整数数组,例如[6, 4, 7, 2, 5, 8]和一个数字,例如10,请设计一个函数找出两个元素(或同一个元素加自身),并且使这两个数的和为给定数字,并打印出来 例如[6, 4, 7, 2, 5, 8]和数字10.打印结果为: 6, 4 2, 8 5, 5
function fn4(arr4, number1) {
var newArr4 = arr4
console.log("旧的:" + arr4)
console.log("新的:" + newArr4)
for (var j = 0; j < arr4.length; j++) {
for (var i = 0; i < newArr4.length; i++) {
if (arr4[j] + newArr4[i] == number1) {
console.log(arr4[j], newArr4[i]);
}
}
}
}
var arr4 = [6, 4, 7, 2, 5, 8]
var number1 = 10
fn4(arr4, number1)
// 5, 随机给出一个10位以内的数,然后输出该数共有多少位,并将每位的数字保存到数组中. 如: 1342, 位数为: 4, 数组为: [1, 3, 4, 2]
function fn5(number1) {
var arr5 = []
var num = parseInt(number1)
var str = num.toString()
var len = str.length
console.log("这个数是:" + str + "位数为:" + len)
for (var i = 0; i < len; i++) {
arr5.push(str[i])
}
console.log(arr5);
}
fn5(134256789)
// 6, 给定两个升序整型数组a和b,打印其共同元素,比如:a = [0, 1, 2, 3, 4],b = [1, 3, 5, 7, 9],输出 1, 3
function fn6(a, b) {
console.log("相同的数字有:")
for (var j = 0; j < b.length; j++) {
for (var i = 0; i < a.length; i++) {
if (a[i] == b[j]) {
console.log(a[i]);
}
}
}
}
var a = [0, 1, 2, 3, 4]
var b = [1, 3, 5, 7, 9]
fn6(a, b)
// 7, 有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中,如: [2, 3, 4, 56, 67, 98] //63, 100
function fn7(number1, number2) {
var arr7 = [2, 3, 4, 56, 67, 98]
var arr = arr7.concat([number1], [number2])
arr.sort(function (a, b) { return a - b })
console.log(arr);
}
fn7(68, 100)
// 8, 取出数组[1, 3, 1, 4, 2, 3, 6, 2, 6, 1, 5]中的重复项, 存入一个新的数组, 并从大到小排序
function fn8(arr8) {
var newArr = []
for (var i = 0; i < arr8.length; i++) {
if (!newArr.includes(arr8[i])) {
newArr.push(arr8[i])
newArr8 = newArr.sort(function (a, b) { return a - b })
}
}
console.log(newArr8);
}
var arr8 = [1, 3, 1, 4, 2, 3, 6, 2, 6, 1, 5]
fn8(arr8)
/* 9, 生成13位条形码(对之前的知识综合练习)
Ean - 13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
例如:690123456789 -> [6, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第十三位计算其校验码的过程为:
1,前十二位的奇数位和6 + 0 + 2 + 4 + 6 + 8=26
2,前十二位的偶数位和9 + 1 + 3 + 5 + 7 + 9=34
3,将奇数和与偶数和的三倍相加26 + 34 * 3=128
4,取结果的个位数:128的个位数为8
5,用10减去这个个位数10 - 8=2
所以校验码为2(注:如果取结果的个位数为0,那么校验码不是(10 - 0=10),而是0
实现函数ean13(n)计算验证码,输入12位条码,返回带验证码的条码。
例如:输入:692223361219输出:6922233612192 */
function fn9(arr9) {
console.log("输入初始值为:" + arr9)
var num = parseInt(arr9)
var str = num.toString()
var len = str.length
console.log("len:" + len)
var arr = []
var number13 = 0
var sum1 = 0, sum2 = 0
for (var i = 0; i < len; i++) {
arr.push(str[i])
if ((i + 1) % 2) {
sum1 += str[i] - 0
}
else {
sum2 += arr[i] - 0
}
}
number13 = (10 - parseInt(sum1 + sum2 * 3 % 10) % 10)
console.log(number13)
console.log(arr9 + number13.toString())
}
fn9(692223361219)
// 10, 开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。
function FlipFlop(n) {
var arr10 = []
for (var i=1; i<=n; i++) {
arr10.push(i)
if (!(i % 3)) {
arr10.splice(i-1, 1, "Flip")
}
if (!(i % 5)) {
arr10.splice(i-1, 1, "Flop")
}
if (!(i % 3)&& !(i % 5)) {
arr10.splice(i-1, 1, "FlipFlop")
}
}
console.log(arr10);
}
FlipFlop(100)
本文来自博客园,作者:苏沐~,转载请注明原文链接:https://www.cnblogs.com/sumu80/p/16533639.html