javascript 前端开发基础:数组/字符串方法

web前端开发实习总结 | 微信版商城开发 前端 | 微信开发是前端么
js的基础, 首先从数组和字符串开始。
string 常用方法:
1. substring(start开始位置的索引, end结束位置索引) 截取的位置不包含结束位置的字符, 只写一个参数表示从开始位置截取到最后
var str = ‘abcdefg’;
str.substring(1) //得到bcdefg str.substring(1,3) //得到bc
输入负值时将负值变为0, 哪个较小作为开始位置
str.substing(-1, 1) => str.substring(0, 1) //a
str.substring(1, -2) => str.substring(0, 1) //a
2. slice(start开始位置索引, end结束位置索引) 基本和substring相似, 区别在参数为负数。
var str = ‘abcdefg’;
str.slice(1) //bcdefg str.substring(1,3) // bc
输入负值时 值与字符串的长度相加
str.slice(-1) => str.slice(6) //g
str.slice(1, -2) => str.slice(1, 5) //bcde
str.slice(-2, -1) => str.slice(5, 6) //f
值绝对值大于字符串的长度时变为 0
str.slice(-22) => str.substring(0) //abcdefg
第二个参数绝对值大于字符串的长度时, 返回 ”
3. substr(start开始位置索引, end需要返回的字符个数)
var str = ‘abcdefg’;
str.substr(1) //bcdefg str.substr(1,1) //b
输入负值时 start参数与字符串的长度相加, end为负时参数变为0
str.substr(-1) => str.substr(6) //g
str.substr(-2, -3) // ”
4. charAt(index) 方法返回指定索引位置处的字符。 如果超出有效范围(0 与字符串长度减一) 的索引值返回空字符串.
var str = ‘abcdefg’;
str.charAt(2) // c
5. index(string) 返回String对象内第一次出现子字符串位置。 如果没有找到子字符串, 则返回 – 1。
var str = ‘abcdefga’
str.indexOf(‘a’) // 0 str.indexOf(‘h’) //-1
6. lastIndexOf(string) 倒叙查找
返回String对象内第一次出现子字符串位置。 如果没有找到子字符串, 则返回 – 1。
var str = ‘abcdefga’
str.lastIndexOf(‘a’) // 7
7. split(str) 将字符串以参数分割为数组
var str = ‘abcadeafg’
str.split(‘a’) //[“”, “bc”, “de”, “fg”]
8. toLowerCase方法返回一个字符串, 该字符串中的字母被转换成小写。
9. toUpperCase方法返回一个字符串, 该字符串中的所有字母都被转换为大写字母。
10. match()– 方法可在字符串内检索指定的值, 或找到一个或多个正则表达式的匹配
11. search 方法返回与正则表达式查找内容匹配的第一个字符串的位置。
12. replace 用来查找匹配一个正则表达式的字符串, 然后使用新字符串代替匹配
http: //www.cnblogs.com/bijiapo/p/5451924.html
    数组常用的方法
1. push 添加到最后 返回添加后的数组
2. unshift 添加到最前面 返回添加后的数组
3. shift 删除( 从前面) 返回处理后的数组
4. pop 删除最后一项 返回处理后的数组
5. reverse 数组翻转 返回处理后的数组
6. join 数组转化为字符串
var arr = [1, 2, 3, 4, 5],
    str = arr.join(‘–‘);
console.log(str); // 1–2–3–4–5 以join内的参数切割数组
console.log(arr); // [1,2,3,4,5] 原数组未变
7. slice(start, end) 截取数组 从start( 开始) 到end( 结束 不包含)
返回新数组, 原数组不变
var arr = [1, 2, 3, 4, 5],
    new = arr.slice(2, 4);
console.log(new); // [3,4]
console.log(arr); // [1,2,3,4,5]
8. concat 数组合并
9. splice( 开始下标, 个数, ele1, ele2….)剪接数组
(1).一个参数 从参数位置截取 填写负数类似上面str slice 返回截好的数组 原数组变化
var arr = [1, 2, 3, 4, 5];
console.log(arr.splice(1)); // [2,3,4,5]
console.log(arr); // [1]
console.lgo(arr.splice(-1)) // [5]
(2).二个参数 截取( 开始位置, 个数) 返回截好的数组 原数组变化
var arr = [1, 2, 3, 4, 5];
console.log(arr.splice(1, 3)); // [2,3,4]
console.log(arr) // [1,5]
arr.splice(0, 1) => arr.shift()
arr.splcie(arr.length – 1, 1) => arr.pop()
(3).添加 原数组增加
var arr = [1, 2, 3, 4, 5];
console.log(arr.splice(1, 0, 13)); // []
console.log(arr); // [1,13,2,3,4,5]
(4).替换
var arr = [1, 2, 3, 4, 5];
console.log(arr.splice(1, 2, ‘a’, ‘b’)) // [2,3]
console.log(arr); // [1,’a’,’b’,4,5]
arr.splice(0, 0, 1) => arr.unshift(1);
arr.splice(arr.length, 0, 1) => arr.push(1)
10. arr.forEach(item, index, array) {}
遍历, 循环 类似jquery的each
其中的item参数是数组中的内容, index为其索引, array表示数组本身
var arr = [1, 2, 3, 4, 5];
arr.forEach(function (item, index, array) {
})
遇到嵌套跳出循环出现问题, 暂时没有解决;
11. map方法 映射 用法和forEach类似
var men = [{
            ‘name’: 1,
            ‘age’: 12
        },
        {
            ‘name’: 2,
            ‘age’: 22
        },
        {
            ‘name’: 3,
            ‘age’: 33
        }
    ],
    age = men.map(function (item) {
        return item.age;
    })
12. arr.sort 排序
var arr = [1, 2, 22, 11, 33, 3, 5, 4];
console.log(arr.sort()) // [1,11,2,22,3,33,4,5]
默认情况下sort方法是按ascii字母顺序排序的, 而非我们认为是按数字大小排序
arr.sort(function (a, b) {
    return a – b
})
a – b从小到大 b – a从大到小
13. 顺便写写我知道的排序方法
( 1) 冒泡排序 每次比较相邻的两个数, 如果后一个数比前一个数小, 换位置
function bSort(arr) {
    var tmp;
    for (var i = 0, len = arr.length – 1; i < len; i++) {
        for (var j = 0; j < len; j++) {
            if (arr[j] > arr[j + 1]) {
                //换位置
                tmp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
    return arr;
}
function bSort(arr) {
    var tmp;
    arr.forEach(function (item, i) {
        arr.forEach(function (item, i) {
            if (item > arr[i + 1]) {
                //换位置
                tmp = arr[i + 1];
                arr[i + 1] = arr[i];
                arr[i] = tmp;
            }
        })
    })
    return arr
}
2) 快速排序 二分法, 找到中间的数, 取出来(新数组), 原数组没, 每次和此数比较, 小的放到左边, 大的放到右面
function fastSoft(arr) {
    var len = arr.length;
    if (len <= 1) {
        return arr
    }
    var cIndex = Math.floor(len / 2),
        c = arr.splice(c, 1),
        left = [],
        right = [];
    arr.forEach(function (item, i) {
        if (item < c[0]) {
            left.push(item);
        } else {
            right.push(item);
        }
    })
    return fastSoft(left).concat(c, fastSoft(right));
}
14. 数组的去重也写下吧
( 1) 双层循环不是很好
var arr = [2, 3, 2, 2, 2, 4, 5],
    arr2 = [];
function find(arr2, ele) {
    for (var i = 0, len = arr2.length; i < len; i++) {
        if (arr2[i] == ele) return true;
    }
    return false;
}
for (var i = 0, len = arr.length; i < len; i++) {
    if (!find(arr2, arr[i])) {
        arr2.push(arr[i]);
    }
}
2) 利用json的key值无重复
var arr = [2, 3, 2, 2, 2, 4, 5],
    json = {},
    arr2 = [];
arr.forEach(function (item, i) {
    if (!json[item]) {
        json[item] = 222;
    }
});
for (var name in json) {
    arr2.push(Number(name)); //类型发生变化了
}
(3) 利用sort方法排序, 去掉旁边相同项
var arr = [2, 3, 2, 4, 4, 4, 5],
    arr2 = [];
arr.sort();
for (var i = 0; i < arr.length; i++) {
    if (arr[i] == arr[i + 1]) {
        arr.splice(i–, 1);
    }
}
一些常见数学方法
math.abs() 取绝对值 math.ceil() 向上取整 math.floor() 向下取整
math.round() 四舍五入 math.roundom
function getRan(n, m) {
    return Math.floor(Math.random() * (m – n) + n);
}
数组和字符串的一些综合应用
1. 截取后缀名
    (1) var str = ‘1.xxx.avi’;
str = str.substring(str.lastIndexOf(‘.’) + 1);
(2) var str = ‘1.xxx.avi’;
var arr = str.split(‘.’);
console.log(arr[arr.length – 1]);
2. 字母翻转, 首字母大写
var str = ‘wo shi yi ge demo’,
    arr = str.split(‘ ‘);
for (var i = 0; i < arr.length; i++) {
    console.log()
    arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
arr.reverse();
str = arr.join(‘ ‘);
3. str中字符出现次数的统计
var str = ‘aaaandkdffsfsdfsfssq12345’,
    json = {},
    n = 0,
    sName;
for (var i = 0, len = str.length; i < len; i++) {
    var Letter = str.charAt(i);
    //统计次数
    if (json[Letter]) {
        json[Letter]++;
    } else {
        json[Letter] = 1;
    }
}
//找最大
for (var name in json) {
    if (json[name] > n) {
        n = json[name];
        sName = name;
    }
}
console.log(‘出现最多的字母’ + sName + ‘次数为’ + n);
4. 简单的url参数解析
function getData() {
    var search = window.location.search.substring(1);
    if (!search) {
        return;
    }
    var arr = search.split(‘&’),
        arr2 = [],
        json = {},
        key,
        alue;
    for (var i = 0; i < arr.length; i++) {
        arr2 = arr[i].split(‘=’);
        key = arr2[0];
        value = arr2[1];
        json[key] = value;
    }
    return json;
}
前端开发怎么用psd?|前端开发怎么切图?|svn版本控制器前端开发怎么用?
» 本文来自:前端开发者 » 《javascript 前端开发基础:数组/字符串方法》
» 本文链接地址:https://www.rokub.com/4001.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!