JS Java 对数组,字符串操作方法

数组:

toString()		把数组转换成字符串,逗号分隔每一项
valueOf()         返回数组对象值本身
// 1 栈操作(先进后出)
push()
pop() 		//取出数组中的最后一项,修改length属性
// 2 队列操作(先进先出)
push()
shift()		//取出数组中的第一个元素,修改length属性
unshift() 	//在数组最前面插入项,返回数组的长度
// 3 排序方法
reverse()	//翻转数组
sort(); 	//即使是数组sort也是根据字符,从小到大排序
// 带参数的sort是如何实现的?
// 4 操作方法
concat()  	//把参数拼接到当前数组
slice() 	//从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
splice()	//删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
// 5 位置方法
indexOf()lastIndexOf()   //如果没找到返回-1
// 6 迭代方法 不会修改原数组(可选)
every()filter()forEach()map()reduce()some()
// 7 方法将数组的所有元素连接到一个字符串中。
join()

String

// 1 字符方法
charAt()    	//获取指定位置处字符
charCodeAt()  	//获取指定位置处字符的ASCII码
str[0]   		//HTML5,IE8+支持 和charAt()等效
// 2 字符串操作方法
concat()   		//拼接字符串,等效于+,+更常用
slice()    		//从start位置开始,截取到end位置,end取不到
substring() 	//从start位置开始,截取到end位置,end取不到
substr()   		//从start位置开始,截取length个字符
// 3 位置方法
indexOf()   	//返回指定内容在元字符串中的位置
lastIndexOf() 	//从后往前找,只找第一个匹配的
// 4 去除空白   
trim()  		//只能去除字符串前后的空白
// 5 大小写转换方法
to(Locale)UpperCase() 	//转换大写
to(Locale)LowerCase() 	//转换小写
// 6 其它
search()
replace()
split()
fromCharCode() //unicode转字符串
// String.fromCharCode(101, 102, 103);

前端特殊数据处理

 <script>


    /*
      数组降维度展平 flat
      [1, 2, 3, 4, [5, 6], [7, [8], 9], 10] = >  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

      
    */

    var arr = [1, 2, 3, 4, [5, 6], [7, [8], 9], 10];
    console.log(arr.flat(9));


    /*
     数组去重 (基础类型数组集合)
     [1,2,3,4,5,1,'haha',23,4,5,'haha',false,1]

    */

    function unique(arr) {
      return arr.filter(function (item, idx, arr) {
        //复合return条件的项目留下来 不符合的过滤掉
        //判断当前项item 的下标
        return arr.indexOf(item, 0) === idx;
        //arr.indexOf(1, 0)=> 0 === 0 留下来
        //arr.indexOf(1, 0)=> 0 === 11 过滤掉
      });
    }


    function unique(arr) {
      var newArr = [];
      arr.forEach(function (item, idx) {
        if (newArr.indexOf(item) === -1) {
          newArr.push(item);
        }
      })
      return newArr;
    }


    /*
   数组去重 (包含引用类型)
    [1,2,3,4,[1,2,3],[1,2,3],23,4,5,{a:1,b:2},false,{a:1,b:2},{a:1,b:2}]
    [1, 2, 3, 4, Array(3), 23, 5, {…}, false] 
  */

    function uniqueObj(arr) {
      var newArr = [];
      var tempArr = [];
      arr.forEach(function (item, idx) {
        if (newArr.indexOf(item) === -1) {
          if (tempArr.indexOf(JSON.stringify(item)) === -1) {
            tempArr.push(JSON.stringify(item));
            newArr.push(item);
          }
        }
      });
      return newArr;
    }


    /*
    找出数组 arr 中重复出现过的元素 输出为新数组
    [1,2,3,4,5,6,4,5,3,2,7]
    [2, 3, 4, 5]

    */
    function duplicates(arr) {
      var resultArr = [];
      arr.forEach(function (item, idx) {
        if (arr.indexOf(item) != arr.lastIndexOf(item) && resultArr.indexOf(item) == -1) {
          resultArr.push(item);
        }
      });
      return resultArr;
    }
    console.log(duplicates([1, 2, 3, 4, 5, 6, 4, 5, 3, 2, 7]));


    /*
     移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
      [1,2,3,4,5,2,3,2,5,2] , 2=> [1, 3, 4, 5, 3, 5]
    */

    function removeWithoutCopy(arr, item) {
      for (var i = arr.length - 1; i > 0; i--) {
        if (arr[i] === item) {
          arr.splice(i, 1);
        }
      }
      return arr;
    }

    console.log(removeWithoutCopy([1, 2, 3, 4, 5, 2, 3, 2, 5, 2], 2));


    /*
       从某数据库接口得到如下值:
       {
         rows: [
           ["Lisa", 16, "Female", "2000-12-01"],
           ["Bob", 22, "Male", "1996-01-21"]
         ],
           metaData: [
             { name: "name", note: '' },
             { name: "age", note: '' },
             { name: "gender", note: '' },
             { name: "birthday", note: '' }
           ]
       }
   
   
       rows是数据,metaData是对数据的说明。现写一个函数parseData,将上面的对象转化为期望的数组:
   
         [
           { name: "Lisa", age: 16, gender: "Female", birthday: "2000-12-01" },
           { name: "Bob", age: 22, gender: "Male", birthday: "1996-01-21" },
         ]
        */


    var data = {
      rows: [
        ["Lisa", 16, "Female", "2000-12-01"],
        ["Bob", 22, "Male", "1996-01-21"]
      ],
      metaData: [
        { name: "name", note: '' },
        { name: "age", note: '' },
        { name: "gender", note: '' },
        { name: "birthday", note: '' }
      ]
    }

    var resultData;


    function formatting(data) {
      var rows = data.rows;
      var metaData = data.metaData;
      if (!Array.isArray(rows) || !Array.isArray(metaData) || rows.length === 0 || metaData.length === 0) {
        return [];
      }
      return rows.map(function (item, idx, arr) {
        return item.reduce(function (acc, curr, idx) {
          acc[metaData[idx]['name']] = curr;
          return acc;
        }, {});
      })
    }

    /*
      将下面这个对象转为数组 并实现 一个排序方法 一个筛选方法 

       formattingSort('height');   调用 formattingSort 传参 'height' 就以height属性值为排序属性 升序排序

      [{
        name: 'Dan',
        age: 1,
        sex: 1,
        weight: '79kg',
        height: '110cm'
      },
      {
        name: 'meney',
        age: 4,
        sex: 1,
        weight: '69kg',
        height: '160cm'
      },
      {
        name: 'joker',
        age: 1,
        sex: 0,
        weight: '99kg',
        height: '190cm'
      },
      {
        name: 'jojo',
        age: 18,
        sex: 1,
        weight: '90kg',
        height: '195cm'
      },
      {
        name: 'stack',
        age: 99,
        sex: 1,
        weight: '199kg',
        height: '1190cm'
      }]



       formattingFilter('age',function(item){
         return item > 10;
       });

       调用 formattingFilter 传参 'age' 和回调函数 
       以age属性为过滤条件 条件为 function回调函数的return公式

         
      [{
        name: 'jojo',
        age: 18,
        sex: 1,
        weight: '90kg',
        height: '195cm'
      },
      {
        name: 'stack',
        age: 99,
        sex: 1,
        weight: '199kg',
        height: '1190cm'
      }]

      
    */


    var oData = {
      'joker': {
        age: 1,
        sex: 0,
        weight: '99kg',
        height: '190cm'
      },
      'meney': {
        age: 4,
        sex: 1,
        weight: '69kg',
        height: '160cm'
      },
      'Dan': {
        age: 1,
        sex: 1,
        weight: '79kg',
        height: '110cm'
      },
      'jojo': {
        age: 18,
        sex: 1,
        weight: '90kg',
        height: '195cm'
      },
      'stack': {
        age: 99,
        sex: 1,
        weight: '199kg',
        height: '1190cm'
      }
    }




    /*


    */

  </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 灵活使用Java数组操作的方法可以帮助我们更方便地进行成绩统计。具体来说,可以使用Java中的数组来存储学生的成绩信息,然后通过遍历数组、计算平均值、最大值、最小值等统计指标来得出成绩统计结果。同时,还可以使用Java中的排序算法对成绩数组进行排序,以便更好地进行分析和比较。总之,灵活使用Java数组操作的方法可以大大提高我们的成绩统计效率和准确性。 ### 回答2: 灵活使用Java数组操作的方法在成绩统计中可以发挥很大的作用。成绩统计是一个经典的使用数组的应用场景,通常涉及到对一组数值的排序、求和、平均值、中位数、众数、方差、标准差等运算。下面就来看看如何使用Java数组进行操作,完成这些统计任务。 1. 数组的创建和初始化 在开始成绩统计之前,需要创建并初始化一个数组来存储成绩数据。可以使用以下方式创建一个长度为n的数组: ```java double[] scores = new double[n]; ``` 可以通过循环遍历数组并使用随机数或手动输入的方式对数组进行初始化: ```java Random rand = new Random(); for (int i = 0; i < n; i++) { scores[i] = rand.nextDouble() * 100; } ``` 或者手动输入: ```java Scanner scanner = new Scanner(System.in); for (int i = 0; i < n; i++) { System.out.print("请输入第" + (i+1) + "个学生的成绩:"); scores[i] = scanner.nextDouble(); } ``` 2. 数组排序 对数组进行排序可以使用Arrays类中的sort方法,可以对整个数组排序也可以对指定范围内的数组进行排序: ```java Arrays.sort(scores); ``` 3. 数组求和、平均值、中位数、众数、方差、标准差 可以使用循环遍历数组并累加或计算,完成这些常见的统计任务。下面是一些示例代码: ```java // 求数组的和 double sum = 0; for (double score : scores) { sum += score; } // 求数组的平均值 double avg = sum / scores.length; // 求数组的中位数 double median; if (scores.length % 2 == 0) { median = (scores[scores.length/2-1] + scores[scores.length/2]) / 2; } else { median = scores[scores.length/2]; } // 求数组的众数 double mode = -1; int maxCount = 0; for (int i = 0; i < scores.length; i++) { int count = 0; for (int j = 0; j < scores.length; j++) { if (scores[j] == scores[i]) { count++; } } if (count > maxCount) { maxCount = count; mode = scores[i]; } } // 求数组的方差和标准差 double variance = 0; for (double score : scores) { variance += (score - avg) * (score - avg); } variance /= scores.length; double stdDev = Math.sqrt(variance); ``` 4. 数组的输出 可以使用循环遍历数组并使用System.out.println()方法将每个元素输出,也可以使用Arrays.toString()方法将整个数组转化为字符串并输出。 ```java // 按照从小到大的顺序输出 System.out.println("按照从小到大的顺序输出:"); for (double score : scores) { System.out.println(score); } // 将整个数组输出成为字符串 System.out.println("打印整个数组:"); System.out.println(Arrays.toString(scores)); ``` 上述的示例代码可以帮助我们理解如何灵活使用Java数组进行操作,在成绩统计中完成各种统计任务。同时,Java中还有很多其他有用的类和方法,可以帮助我们更方便、更高效地完成数组操作。 ### 回答3: 对于成绩统计来说,灵活使用Java数组操作的方法非常重要。首先,我们需要用Java数组来存储学生的成绩数据。然后,通过Java数组操作的方法对这些数据进行处理和分析,以便我们能够更好地了解每个学生的成绩状况。 1. 定义数组 首先,我们需要定义一个数组来存储学生成绩。数组有多种定义方式,例如可以使用基本类型数组或者对象数组。 int[] scores = new int[10]; // 声明一个包含10个元素的整型数组 String[] names = new String[20]; // 声明一个包含20个元素的字符串类型数组 Student[] students = new Student[30]; // 声明一个包含30个元素的学生对象数组 2. 初始化数组 初始化数组的方式有很多种,例如可以手动为每个元素赋值,或者使用循环对数组进行批量赋值。 int[] scores = {98, 85, 90, 93, 88, 91, 95, 87, 96, 83}; // 声明并初始化一个包含10个元素的整型数组 String[] names = new String[20]; for (int i = 0; i < names.length; i++) { names[i] = "学生" + (i + 1); } Student[] students = new Student[30]; for (int i = 0; i < students.length; i++) { students[i] = new Student(names[i], scores[i]); } 3. 计算数组元素的总和 计算数组元素的总和是用Java数组操作方法中最常用的之一,可以使用循环来实现。 int sum = 0; for (int i = 0; i < scores.length; i++) { sum += scores[i]; } 4. 计算数组元素的平均值 计算数组元素的平均值也需要用到循环来累加数组元素的总和,并且计算完成后需要除以数组长度。 double averageScore = 0; for (int i = 0; i < scores.length; i++) { averageScore += scores[i]; } averageScore /= scores.length; 5. 查找数组元素中的最大值和最小值 查找数组元素中的最大值和最小值可以使用数组的第一个元素作为初始值,然后遍历整个数组,逐个比较数组元素的大小。 int maxScore = scores[0]; int minScore = scores[0]; for (int i = 1; i < scores.length; i++) { if (scores[i] > maxScore) { maxScore = scores[i]; } if (scores[i] < minScore) { minScore = scores[i]; } } 在使用Java数组操作的方法时,我们需要注意数组越界的问题,因为访问不存在的数组元素会导致程序异常。因此,我们需要在使用数组时,尽可能地避免数组越界的情况发生。同时,我们也需要灵活运用Java中提供的数组操作方法来简化我们的代码,提高我们的编程效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值