Array和String

发布时间 2023-04-13 17:57:37作者: 摆烂员

Array对象

new Array()

var arr = new Array(2);//创建长度为2的空数组

检测参数是否是数组

创建数组

var arr =new Array(5);

检测参数是否是数组 instanceof/Array.isArray(params)

/**
*

  • @param {[]]} params
  • @returns
    */
    function reverse(params) {
    if(params instanceof Array){//或者Array.isArray(params)
    var arr = [];
    for (var i = 0; i < params.length; i++) {
    arr[arr.length] = params[params.length - i-1];
    }
    return arr;
    }else{
    return '这个参数不是数组格式';
    }
    }
    var arr = [1,2,3,4,5,6];
    var arr= reverse(arr);
    console.log(arr);

判断arr是否是数组

console.log(Array.isArray(arr));//true

添加删除数组的方法

var arr1 = [1,2,3];

//push可以给数组末尾追加新的元素
//push()参数直接写数组元素就可以
//push完毕后返回新数组的长度
var a = arr1.push(4,'pink');//增加了2个元素
console.log(arr1);
console.log(a);//就等于arr.length
// unshift 给数组前面添加元素,返回数组长度
console.log(arr1.unshift(18));
//pop 删除数组最后一个元素,返回值 被删除的元素
console.log(arr1.pop());
//pop 删除数组第一个元素,返回值 被删除的元素
console.log(arr1.shift());

翻转数组 reverse

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
arr.reverse();
console.log(arr);

排序 sort();

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
arr.sort(function(a,b){
return a-b;//升序
});
arr.sort(function(a,b){
return b-a;//降序
});
console.log(arr);

数组索引 indexof() lastIndexof()

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
console.log(arr.indexOf(7));//返回9 第一个满足条件的索引号
console.log(arr.indexOf(100));//返回-1 如果没有找到元素返回-1
console.log(arr.lastIndexOf(7));//返回9 从后往前找第一个满足条件的索引号

案例:将数组[2,0,6,1,77,0,52,0,25,7]中的0去掉,形成一个不包含0的数组

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr1 = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
arr1.push(arr[i]);
}
}
console.log(arr1);

案例 数组去重

/**
*

  • @param {String[]} arr[]
  • @returns newarr
    */
    var remove = (arr)=>{
    var newarr = [];
    for(let i =0;i<arr.length;i++){
    if(newarr.indexOf(arr[i])==-1){
    newarr.push(arr[i]);
    }
    }
    return newarr;
    }
    var arr=['c','a','z','a','z','a','z','c'];
    console.log(remove(arr));

数组转为字符串 toString() join()可增加分隔符

var arr=['c','a','z','a','z','a','z','c'];
console.log(arr.toString());//c,a,z,a,z,a,z,c

console.log(arr.join());//c,a,z,a,z,a,z,c
console.log(arr.join('-'));//c-a-z-a-z-a-z-c
console.log(arr.join('?);//c?️z?️z?️z:c

String对象

基本包装类型

//1.把简单数据类型包装为复杂数据类型 String Number Boolean
var str = "aaa";
var temp = new String("aaa");
//2.把临时变量的值给 str
str = temp;
//3.销毁临时变量
temp = null;

字符串对象 根据字符返回位置 str.indexof('要查找的字符',[起始的位置])

var str = "hello world";
console.log(str.indexOf("e")); //返回下标1
console.log(str.indexOf("e", 3)); //返回下标-1 指定了起始位置,没有找到

案例 查找字符串'galfalsdfgildfhjsdk'中l出现的位置和次数

/**
*

  • @param {Strig} str
  • @param {String} str1
  • @returns coutn,arr
    */
    var query = (str, str1) => {
    let count = 0;
    let arr = [];
    let index = str.indexOf(str1);
    console.log(index);
    while (index !== -1) {
    arr.push(index);
    index = str.indexOf(str1, index + 1);
    count++;
    }
    return count, arr;
    };
    var str = "galfalsdfgildfhjsdk";
    console.log(query(str, "l"));

charAt(index) 根据位置返回字符

var str = "asfa";
console.log(str.charAt(0)); //返回第一个字符
charCodeAt(index) //返回字符的 ASCII码索引值

案例 判断一个字符串'galfalsdfgildfhjsdk' 中出现最多的字符,并统计其次数

var str = "galfalsdfgildfhjsdk";
var objStr = {};
for (let i = 0; i < str.length; i++) {
var chars = str.charAt(i); //chars是字符串的每一个字符
if (objStr[chars]) {
//objStr[chars]得到属性值
objStr[chars]++;
} else {
objStr[chars] = 1;
}
}
console.log(objStr);
var max = 0;
var ch = "";
for (var key in objStr) {
if (max < objStr[key]) {
max = objStr[key];
ch = key;
}
}
console.log(ch);