js常见习题集总结

数组

T1.找出元素 item 在给定数组 arr 中的位置

function area(arr,num) {
    return arr.indexOf(num);
}
console.log(area([1,2,3,4,5,6,7,8], 2));

T2.计算数组arr中所有元素的总和

function sum(arr) {
    var a = 0;
    for(var i=0; i<arr.length; i++) {
        a += arr[i];
    }
    return a;
}
console.log(sum([1,2,3,4,5]));

T3.移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组

function apartItem(arr, item) {
    var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        if(arr[i] !== item) {
            arrNew.push(arr[i]);
        }
    }
    return arrNew;
}
console.log(apartItem([1,2,3,3,4,5], 3));

T4.移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回

function apartItem(arr, item) {
    //var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        if(arr[i] == item) {
            arr.splice(i,1);
            i--;
        }
    }
    return arr;
}
console.log(apartItem([1,2,3,3,4,5], 3));

T5.在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组

function addItem(arr, item) {
    var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        arrNew.push(arr[i]);
    }
    arrNew.push(item);
    return arrNew;
}
console.log(addItem([1,2,3,3,4,5], 3));

T6.删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
push实现

function deleteItem(arr) {
    var arrNew = [];
    for(var i=0; i<arr.length-1; i++) {
        arrNew.push(arr[i]);
    }
    return arrNew;
}
console.log(deleteItem([1,2,3,3,4,5]));

pop实现

function deleteItem(arr) {
    var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        arrNew.push(arr[i]);
    }
    arrNew.pop(arr[i]);
    return arrNew;
}
console.log(deleteItem([1,2,3,3,4,5]));

T7.在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组

function addItem(arr, item) {
    var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        arrNew.push(arr[i]);
    }
    arrNew.unshift(item);
    return arrNew;
}
console.log(addItem([1,2,3,3,4,5], 0));

T8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组

function deleteItem(arr) {
    var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        arrNew.push(arr[i]);
    }
    arrNew.shift(arr);
    return arrNew;
}
console.log(deleteItem([1,2,3,3,4,5]));

T9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组

function link2(arr1,arr2) {
    var arrNew = [];
    var result = arrNew.concat(arr1,arr2)
    return result;
}
console.log(link2([1,2,3],[4,5,6]));

T10.在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组

function addItem(arr, item, index) {
    var arrNew = [];
    for(var i=0; i<arr.length; i++) {
        arrNew.push(arr[i]);
    }
    arrNew.splice(index, 0, item);
    return arrNew;
}
console.log(addItem([1,2,4], 3, 2));

T11.统计数组 arr 中值等于 item 的元素出现的次数

function showTime(arr, item) {
    var j = 0;
    for(var i=0; i<arr.length; i++) {
        if(arr[i] == item) {
            j += 1;
        }
    }
    return j;
}
console.log(showTime([1,2,3,3,4], 3));

T12.找出数组 arr 中重复出现过的元素

function showTime(arr) {
    var showN = [];
    arr.forEach(function(item) {
        if(arr.indexOf(item) !== arr.lastIndexOf(item) && showN.indexOf(item)==-1) 
            showN.push(item);   
    })
    return showN;
}
console.log(showTime([1,2,3,3,4]));

T13.求二次方(为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组 )

function square(arr) {
    var arrNew = arr.map(function(item, index, array) {
         return item * item;
    });
    return arrNew;
}
console.log(square([1,2,3,3,4]));

T14.创建长度为100的数组
for循环实现

function arr100() {
    var arr = new Array(100);
    for(var i=0; i<arr.length; i++) {
        arr[i] = i;
    }
    return arr;
}

console.log(arr100());
//[0, 1, 2, , , 98, 99]

ES5实现

Object.keys(Array.from({ length: 100 }));  
// ["0", "1", "2", ..., "98", "99"]
Object.keys(Array.apply(null,{ length: 100 }));
// ["0", "1", "2", ..., "98", "99"]
Object.keys(Array.from({ length: 100 })).map(function(item) {
    return +item;
});
//[0, 1, 2, , , 98, 99]
Object.keys(Array.from({ length: 100 })).map(function(item) {
    return parseInt(item);
});
//[0, 1, 2, , , 98, 99]

ES6实现(普通实现)

Array.from(new Array(100).keys());
//[0, 1, 2, , , 98, 99]

优雅进阶 - 扩展运算符

[...Array(100).keys()]
或者
[...Array.from({ length: 100 }).keys()]

T15.创建长度为100的随机数组

function arr100() {
    var arr = new Array(100);
    for(var i=0; i<arr.length; i++) {
        arr[i] = Math.ceil(Math.random()*100);
    }
    return arr;
}

console.log(arr100());

T16.数组去重

function arr100() {
    //定义一个含有100个元素的数组
    var arr = new Array(100);
    //定义一个空数组,用于去重后存放数据
    var arrNew = [];
    //随机生成100个数组元素
    for(var i=0; i<arr.length; i++) {
        arr[i] = Math.ceil(Math.random()*100);
    }
    //数组去重
    for(var j=0; j<arr.length; j++) {
        if(arrNew.indexOf(arr[j]) == -1)
            arrNew.push(arr[j]);
    }
    return arrNew;
}

console.log(arr100());

正则

T1.判断字符串是否包含数字
test实现

function includeNum(str) {
    var reg = /\d/;
    return reg.test(str);
}
console.log(includeNum("235rey34"));

match实现

function includeNum(str) {
    var reg = /[0-9]/;
    return str.match(reg);
}
console.log(includeNum("235rey34"));

T2.判断连续重复字母
test实现

function repeatWord(str) {
    var reg = /([a-zA-Z])\1/;
    return reg.test(str);
}
console.log(repeatWord("235rrey34"));

match实现

function repeatWord(str) {
    var reg = /([a-zA-Z])\1/;
    return str.match(reg);
}
console.log(repeatWord("235rrey34"));

T3.判断是否以元音字母结尾

function endWith(str) {
    var reg = /[aeiou]$/;
    return str.match(reg);
}
console.log(endWith("235rrey34e"));

T4.获取指定字符串
**给定字符串 str,检查其是否包含 3 个连续的数字
1、如果包含,返回最新出现的 3 个数字的字符串
2、如果不包含,返回 false**

function include3(str) {
    var result, reg = /[0-9]{3}/;
    if(reg.test(str)) {
        result = str.match(reg);
        return result[0];
    } else {
        return false;
    }
}
console.log(include3("235rrey34e"));

T5.判断是否符合指定格式
**给定字符串 str,检查其是否符合如下格式
1、XXX-XXXX-XXXX
2、其中 X 为 Number 类型**

function pattern(str) {
    var reg = /^\d{3}-\d{4}-\d{4}$/;
    return reg.test(str);
}
console.log(pattern("135-4873-8025"));

T6.判断是否符合 USD 格式
1、以 $ 开始
2、整数部分,从个位起,满 3 个数字用 , 分隔
3、如果为小数,则小数部分长度为 2
4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3**

function dollars(str) {
    var reg = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/;
    return reg.test(str);
}
console.log(dollars("$11,342.56"));

T7.获取 url 参数
**获取 url 中的参数
1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}
3. 如果存在多个同名参数,则返回数组**


持续更新中。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值