精华内容
下载资源
问答
  • 要求: 提示用户键盘录入一个包含数字和字母的字符...按照数字在前字母在的规则组成一个的字符串,把组成字符串打印在控制台。 import java.util.Scanner; public class zifuchuan { public static void ...
    要求:
    提示用户键盘录入一个包含数字和字母的字符串(不做是否包含数字和字母的判断),
    遍历字符串分别筛选出数字和字母把它们分别拼接成字符串(如有符号不包含在字母里),
    按照数字在前字母在后的规则组成一个新的字符串,把组成的新字符串打印在控制台。
    import java.util.Scanner;
    public class zifuchuan {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请录入一个包含数字和字母的字符串");
            String S=sc.next();
            //System.out.println(S);
            String S1="";
            String S2="";
            String S3="";
            for (int i = 0; i <S.length() ; i++) {
               char c=S.charAt(i);
               if (c<='9'&&c>='0'){
                    S1 +=c;
               }if (('A'<=c&&c<='Z')||('a'<=c&&c<='z')){
                   S2 += c;
                }
            }
            S3=S1+S2;
            System.out.println(S3);
        }
    }

     

    展开全文
  • 我司最近正在用VUE做一个基于用户权限显示不同左侧菜单的后台管理系统,接口会根据...但是接口返给我的只是普通的由键值对组成数组,而vue-router需要的是固定格式的路由写法,于是我就只能自己动手将普通的数组...

    我司最近正在用VUE做一个基于用户权限显示不同左侧菜单的后台管理系统,接口会根据用户的权限不同返回不同的菜单名称、URL等,前端要将这些菜单名称及URL动态添加到系统的左侧,这里就用到了vue-router2.2新添的router.addRouter(routes)方法。但是接口返给我的只是普通的由键值对组成的数组,而vue-router需要的是固定格式的路由写法,于是我就只能自己动手将普通的数组转换成路由的写法了。具体代码如下:

    let json = [
                {
                  "id": 64,
                  "code": "565",
                  "name": "共和国",
                  "label": "共和国",
                  "parentId": 0,
                  "type": 2,
                  "seq": 0,
                  "url": "/public",
                  "description": "同意",
                  "children": []
                },
                {
                  "id": 1,
                  "code": "sys_mgnt",
                  "name": "系统管理",
                  "label": "系统管理",
                  "parentId": 0,
                  "type": 1,
                  "url": "/system",
                  "seq": 1,
                  "description": "aaa",
                  "children": [
                    {
                      "id": 28,
                      "name": "测试二级菜单1",
                      "label": "测试二级菜单1",
                      "parentId": 1,
                      "type": 1,
                      "url": "/add",
                      "seq": 1,
                      "description": "测试二级菜单的描述",
                      "children": [
                          {
                            "id": 288,
                            "name": "三级菜单1",
                            "label": "三级菜单1",
                            "parentId": 11,
                            "type": 1,
                            "url": "/add1",
                            "seq": 1,
                            "description": "三级菜单1的描述",
                            "children": []
                          }                 
                      ]
                    },
                    {
                      "id": 30,
                      "name": "新增角色管理",
                      "label": "新增角色管理",
                      "parentId": 1,
                      "type": 2,
                      "seq": 1,
                      "description": "新增角色管理的描述",
                      "children": []
                    },
                    {
                      "id": 31,
                      "name": "add角色管理",
                      "label": "add角色管理",
                      "parentId": 1,
                      "type": 1,
                      "seq": 1,
                      "description": "add角色管理的描述",
                      "children": []
                    },
                    {
                      "id": 3,
                      "code": "ro_mgnt",
                      "name": "角色管理",
                      "label": "角色管理",
                      "parentId": 1,
                      "type": 1,
                      "url": "",
                      "seq": 2,
                      "children": [
                        {
                          "id": 32,
                          "name": "可以成功",
                          "label": "可以成功",
                          "parentId": 3,
                          "type": 2,
                          "url": "/ctrl",
                          "seq": 1,
                          "description": "能成功吗的描述",
                          "children": []
                        }
                      ]
                    }
                  ]
                }
              ]
    
            let routerArr = JSON.parse(JSON.stringify(json));
    
            function formatRoutes(routerArr){
                const arr = [];
                let obj = {};           
                routerArr.forEach(router => {       
                    const tmp = { ...router };
                    if(tmp.type == 1){  //只筛选出type=1的项
                        if (tmp.children) {
                            tmp.children = formatRoutes(tmp.children);
    
                            const {url, children, type} = router;
    
                            obj = {
                                path: tmp.url,
                                name: tmp.name,
                                meta: {title: tmp.name},
                                children: tmp.children
                            }                       
                        }
                        arr.push(obj);
                    }
                })
                return arr;
            }
    
            let routers = formatRoutes(routerArr);
            console.log(routers);

    输出的结果为:
    688074-20181031133228446-1298838168.jpg

    很明显这就已经符合了路由的基本写法,只是在每一个路由配置中少了一个component,所以接口返给我们的数组即使我们通过递归遍历生成了我们想要的东西,但是依旧不能满足前端的配置需求,个人建议接口返回固定的路由配置格式且返回的路由应该是前端提前已经配好的,不然我们的component里边的路径写啥?不然我们要跳转的页面在哪儿?不过这不是本文讨论的重点!

    js递归遍历多维数组并在修改数组的key后返回新的多维数组DEMO(返回的结果可以在浏览器的控制台中查看)

    转载于:https://www.cnblogs.com/tnnyang/p/9882538.html

    展开全文
  • 本文实例讲述了JavaScript遍历数组的三种方法map、forEach与filter。分享给大家供大家参考,具体如下: 前言 近一段时间,因为项目原因...map()方法返回一个由原数组中的每个元素调用一个指定方法的返回值组成
  •  map()方法返回一个由原数组中的每个元素调用一个指定方法的返回值组成新数组 var newArray = ["1","2","3"].map(function(e,i,arr){return parseInt(e,10)}) map中回调函数中的e参数为:

    前端对数组进行遍历、处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象。js原生自带的常用的对数组遍历处理的方法,分别为:map、forEach、filter。

    <1>、Js自带的map()方法

    1.方法概述
      map()方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组

    var newArray = ["1","2","3"].map(function(e,i,arr){return parseInt(e,10)})
    

    map中回调函数中的e参数为:当前正在遍历的元素
      map中回调函数中的i参数为:当前元素索引
      map中回调函数中的arr参数为:原数组本身
      
    3.使用说明
      3.1 支持return返回值;
      3.2 return是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份数组中的对应项改变了)
      3.3 map只能对元素进行加工处理,产生一个新的数组对象。而不能用它来进行筛选(筛选用filter),为什么不能,看个例子就知道了:

    4.例子
      4.1 在字符串中使用
        在一个String上使用map方法获取字符串中每个字符所对应的ASCII码组成的数组

    var map = Array.prototype.map
    var a = map.call("Hello World", function(e){return e.charCodeAt(0);})
    // a的值为[72,101,108,108,111,32,87,111,114,108,100]
    

    5.易犯错的点
      5.1 很多时候,map给回调函数传的是一个值,但是也有可能传2个、3个值,例如下面的例子

    var map = Array.prototype.map
    var a = map.call("Hello World", function(e){return e.charCodeAt(0);})
    // a的值为[72,101,108,108,111,32,87,111,114,108,100]
    

    为什么会这样,因为parseInt就是一个函数,它就是作为map的一个回调函数,parseInt接收两个参数,一个是String,一个是进制
    上面的函数就可以化为:

    ["1","2","3"].map(parseInt(string, radix));
    

    ["1","2","3"].map(function(string, radix){return parseInt(string, radix)})
    // 所以才返回结果为:[1, NaN, NaN]
    

    6.与map相关
      6.1 Map对象
      es6提供一个对象Map,看看这个Map建的对象到底是啥东西
    它是一个对象,size是它的属性,里面的值封装在[[Entries]]这个数组里面

    myMap.set(1, "a"); // 相当于java的map.put();
    myMap.set(2, "b");
    myMap.set(3, "c");
    myMap.size();
    myMap.get(1);
    myMap.get(2);
    myMap.get(3);
    

    <2>、Js自带的forEach()方法

    1.方法概述
      forEach()方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组

    2.格式说明
      forEach方法中的function回调有三个参数,
      第一个参数为:当前正在遍历的元素
      第二个参数为:当前元素索引
      第三个参数为:原数组本身

    [].forEach(function(value, index, array))
    

    3.使用说明
      3.1 这个方法没有返回值,仅仅是遍历数组中的每一项,不对原来数组进行修改
      但是可以自己通过数组索引来修改原来的数组
      3.2 forEach()不能遍历对象,可以使用for in
    4.缺点
      4.1 您不能使用break语句中断循环,也不能使用return语句返回到外层函数
      4.2 ES5推出的,实际性能比for还弱

    5.例子
      5.1 通过数组索引改变原数组

    var obj = [1,2,3,4,5,6]
    var res = obj.forEach(function(item, index, arr) {
      arr[index] = item * 10;
    })
    console.log(res); // --> undefined
    console.log(obj); // --> [10,20,30,40,50,60]
    

    5.2 如果数组在迭代的时候被修改,则当前元素与前面的元素会跳过。因为forEach()不会在迭代之前创建数组的副本

    var words = ['1', '2', '3', '4'];
    words.forEach(function(word) {
      console.log(word);
      if (word === '2') {
        words.shift();
      }
    });
    // 1
    // 2
    // 4
    

    6.与forEach相关
      6.1 $.each 与 for in
        可遍历数组,可遍历对象
          // 6.1.1遍历数组

    var arr = [12345]
    var res = $.each(arr, function(index, value){
      console.log(index, value);
    })
    console.log(res); // 返回值,被遍历的函数
    

    // 6.1.2遍历对象

    var obj = {name: "psg", age: 22, gender: "male"};
    // for in 遍历
    for(var key in obj) {
      console.log(key, obj[key]);
    }
    // $.each 遍历
    $.each(obj, function(key, value) {
      console.log(key, value);
    })
    

    <3>、Js自带的filter()方法

    1.方法概述
      filter()方法是对原数组进行过滤筛选,产生一个新的数组对象

    2.注意事项
      2.1 filter()不会对空数组进行检测(如果对空数组进行筛选,返回值位undefined)
      2.2 filter()不会改变原始数组
      2.3 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组
    3.格式说明

    filter方法中的function回调有三个参数,
        第一个参数为:当前正在遍历的元素
        第二个参数为:当前元素索引
        第三个参数为:原数组本身

    [].filter(function(value, index, array), thisValue)
    

    4.例子
     4.1 在一个Array中,删除偶数,只保留奇数

    var arr = [1, 2, 3, 4, 5, 6, 9, 10, 15];
    var r = arr.filter(function(x) {
      return x % 2 !== 0;
    });
    r; // [1,3,5,9,15]
    

    4.2 把一个Array中的空字符串删掉

    var arr = ['A', '', 'B', null, undefined, 'C', ' '];
    var r = arr.filter(function(e) {
      return s && s.trim(); // 注意:IE9一下的版本没有trim()方法
    });
    // ['A', 'B', 'C']
    
    4.3 巧妙去除Array的重复元素
    
    var r, arr = ['A', 'B', 'C', 'D', 'B', 'A']
    r = arr.filter(function(e, i, self) {
      return self.indexOf(e) === i;
    })
    console.log(r); // --> ['A', 'B', 'C', 'D']
    

    4.4 筛选素数

    function get_primes(arr) {
      var i;
      return arr.filter(function (element) {
        var flag = true;
        if (element < 2) {
          flag = false;
        } else {
          for (var i = 2; i < element; i++) {
            if (element % i == 0) {
              flag = false;
              break;
            }
          }
        }
        return flag;
      })
    }
    
    展开全文
  • c=[‘裤子’,‘衣服’,‘袜子’],各取出一个元素,组成新数组,如[‘红’,‘L’,‘裤子’],求所有可能的组合。 1.思路: 先把数组a的第一个元素放入栈中,然后把数组b的第一个元素放入栈中,再把数组c的第一个...

    在以下三个数组 :
    a=[‘红’,‘黄’,‘白’];
    b=[‘L’,‘M’,‘S’];
    c=[‘裤子’,‘衣服’,‘袜子’],各取出一个元素,组成新的数组,如[‘红’,‘L’,‘裤子’],求所有可能的组合。

    1.思路:
    先把数组a的第一个元素放入栈中,然后把数组b的第一个元素放入栈中,再把数组c的第一个元素放入栈中,得出了第一种组合。
    接着取出栈的最后一个元素,放入数组c的第二个元素,然后取出,放入下一个,依次类推,直到数组c遍历完,再取出栈的后两个元素,把数组b的第二个元素压入栈中,数组c的第一个元素压入栈中,然后再取出,依次往复,即可得到所有组合。

    2.JavaScript代码的实现:

    <script type="text/javascript">
    	let a=['红','黄','白'];
    	let b=['L','M','S'];
    	let c=['裤子','衣服','袜子']
    	//合并三个数组
    	let arr=[]
    	arr.push(a)
    	arr.push(b)
    	arr.push(c)
    	//临时栈,存放过程
    	let tmp=[]
    	//存放结果,
    	let result=[]
    	function threeArray(arr,N,tmp,result){
    		for(let i=0;i<arr[N].length;++i){
    			//N表示第几个数组,如arr[0],表示第一个数组a。arr[0][0],表示数组a的第一个元素
    			tmp.push(arr[N][i])
    			//arr.length为合并前的数组的数量
    			if(N<arr.length-1){
    				threeArray(arr,N+1,tmp,result)
    			}else{
    				let oneResult=[];
    				for(let j=0;j<arr.length;j++){
    					oneResult.push(tmp[j])
    					// console.log(tmp[j])
    				}
    				result.push(oneResult)
    			}
    			//最后一位出栈
    			tmp.pop()
    		}
    	}
    	threeArray(arr,0,tmp,result)
    	for(let i=0;i<result.length;i++){
    		console.log(result[i])
    	}
    </script>
    

    3.结果展示:在这里插入图片描述

    展开全文
  • 创建集合,遍历老集合,获取老集合中的元素,判断集合中是否包含这个元素 a)如果不包含,则将这个元素添加到集合中 5.清空老集合中元素 6.将集合中的元素添加到老集合中 7.遍历老集合...
  • 各种数组方法集锦

    2020-07-28 17:21:00
    map() 方法返回一个新数组,这个新数组:由原数组中的每个元素调用一个指定方法的返回值组成新数组。  map() 不会对空数组进行检测。  map() 不会改变原始数组。 var arr = ["a","b","c","d...
  • map方法遍历数组元素然后返回一个由原数组中的每个元素调用一个指定方法的返回值组成新数组。 forEach方法遍历数组元素,无返回值 every方法判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true...
  • 题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字...我们可以借鉴归并排序的思想,把数组划分为子数组,然后对每个子数组中的逆序对数进行统计,统计完成再并到一个数组中进行统计,
  • 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成数组,后面跟 A 的所有奇数元素。 你可以返回满足此条件的任何数组作为答案 示例: 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2...
  • 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成新数组,要求也按非递减顺序排序。 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 来源:力扣(LeetCode) 解: 这道题如果直接求解...
  • 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成新数组,要求也按非递减顺序排序。 示例 1: 输入: [-4,-1,0,3,10] 输出: [0,1,9,16,100] 示例 2: 输入: [-7,-3,2,3,11] 输出: [4,9,9,49,121]...
  • https://blog.csdn.net/u010425776/article/details/50817174题目:将一个非递减序列的某一处切一刀,再把前半段序列放到半段序列的后面,这样组成序列叫做“旋转数组”。要求获取一个旋转数组的最小值。这...
  • 题目:将一个非递减序列的某一处切一刀,再把前半段序列放到半段序列的后面,这样组成序列叫做“旋转数组”。要求获取一个旋转数组的最小值。 这本质上是一个求最值的问题,最简单的方法就是顺序遍历数组,...
  • 闭包返回一个变换的元素,接着将所有这些变换的元素组成一个数组 1.比如我们有一个这样的需求遍历一个数组中所有的元素,将每个元素自身与自身相加,最后返回一个保存相加元素的数组(-_-原谅我这表达能
  • 和为奇数的子数组数目 给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。 由于答案可能会很大,请你将结果对 10^9 + 7 ...当出现了一个的能组成奇数的,那么它可以和之前的每一个组合组成一个奇数的子数组
  • 这道题题干不长,还挺好理解的,就是一个递增的数组前面有一部分被截取接到了剩下那部分的后面去,,组成了一个新数组,然后要找到这个新数组的最小值。这道题一眼看过去,可以直接一个min()或者进行遍历,找到第一...
  • 遍历map的方法

    2016-09-22 17:46:00
    map()方法返回一个由原数组中的每个元素调用一个指定方法的返回值组成新数组。 语法 array.map(callback[,thisArg]) 或 array.map(function(value,index,array){  return 要放入新数组的值 }) 参数 ...
  • js中的遍历和jquery中的遍历

    千次阅读 2017-04-12 09:55:16
    1.map() 方法返回一个由原数组中的每个元素调用一个指定方法的返回值组成新数组。 使用实例: var ary = [12,23,24,42,1]; var res = ary.map(function (item,index,input) { return item*10; }) console....
  • 前正

    2020-06-06 07:52:53
    从一个无序的数组变成一个有序的数组,首先想到的是遇到正数和0后移,然后整体前移,遇负数位置不动,但是考虑到时间复杂度O(n),因此只能有一层循环,所以就想到建一个新数组,开始遍历,遇到正数放后面同时后面的...
  • 内置对象方法

    2020-12-01 14:14:52
    1、Array方法 原型对象上的方法, 可直接通过实例调用 forEach() 遍历数组方法//没返回值(也...filter() 过滤数组,将满足条件的组成新数组返回, 返回新数组 find() 只查找一个值, 查找满足条件的第一个值, 剩下
  • Leetcode 题解(每日打卡) [66.加一] ...0时,该值不为9,则该值加1,并返回数组,否则创建新数组,并令数组第0个元素为1,其余元素均为0。 其实该题总共就只有三种情况: 不进位 进位,但是进位
  • ES5和ES6

    2021-04-08 19:54:24
    ES5和ES6 ES5 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 严格模式: 使用方法:在代码的最...map: 遍历所有数组,将所有元素给一个函数处理,处理的新元素组成一个新数组
  • ES5 严格模式 使用方式:在代码最前面加 "use strict" 优点: 代码规范了 效率提高了 对代码的约束: ...map:遍历所有元素,将所有元素给一个函数处理,处理的新元素组成一个新数组返回 red...
  • (1)取出字符串数组s中的每一列组成新的字符串数组 (2)遍历新的字符串数组的每一行,比较当前行的相邻字符的大小,如果出现前一个字符比一个字符搭的情况,说明当前列要删除,计数器加1 class Solution { ...
  • 八大数据结构

    2020-11-01 18:47:01
    数组的大小固定,扩容、删除、添加操作,要创建新数组或移动元素,效率低 数组只能存储一种类型的数据 适用场景 频繁查询, 对存储空间要求不大 很少增加和删除的情况 链表 链表是一种物理存储单元上非连续、...
  • 就是将数组的数据循环并排序,重新组成新数组,就是冒泡排序 例如: //这里我们先定义一个随机数组 var arr = [10000, 5888, 12000, 6999, 7000, 3000, 4500, 1200, 6000] //首先循环数组,来遍历每一项的值 for...
  • hdu4333——拓展kmp

    2013-03-11 08:34:33
    题意:给定一个数字序列,不断把后缀移到前面去,组成新的数字序列。问分别由多少个不同的数比原数字小、比原数字大、和原数字相等。 很容易想到拓展kmp的:copy一次原串放后面,对新串求一次extend数组,然后遍历...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 151
精华内容 60
关键字:

数组遍历后组成新数组