javascript枚举算法

更新日期: 2019-04-11阅读: 2.4k标签: 枚举

题目:在1,2,3,4,5 五个数中,我们随机选取 3个数。问有多少种取法?并且把每种取出数的方法列举出来

乍看这道题,其实感觉没什么难度。三个for循环不就解决问题了。

代码

var arr=[1,2,3,4,5];
    for(var i=0;i<5;i++){
        for(var j=0;j<5;j++){
            for(var k=0;k<5;k++)
                if(arr[i]!=arr[j]!=arr[j]){
                    console.log(arr[i]+''+arr[j]+arr[k]);
                }
        }
    }


这样子就可以打印出来每种遍历的情况。是不是看起来很简单。但是,如果我们需要解决这一类问题的话,此解法就感觉不足了。比如说:我们在十个数取出八个数求结果,一百个数取出八十个数求出结果。那么,我们分别要循环8次和80次,那么这肯定是不行的。那么,怎么办呢?? 其实采用枚举就可以了。

代码:

var  number=[1,2,3,4,5];  //我们操作的数组
    var state=[];   //记录状态的数组
    var shu=[];    //枚举出来答案得到的数组。
    function dfs(step,n){   //n,代表取几个数出来。
        var flag=true;
            if(step==n){  //判断条件,判断是否取出来了个数。
                    console.log(state.join(""));
                    shu.push(state.join(""));  //把取出来的书方法数组中
                    return 0; //结束循环
            }


            for(var i=0;i<number.length;i++){ //循环数据
                    for(var j=0;j<state.length;j++){  //判断时候取出来重复的数。
                        if(state[j]==number[i]){
                            flag=false;
                            break;
                        }
                    }
                    if(flag){
                            state.push(number[i]);  //保存当前环境
                            dfs(step+1,n);
                            state.pop(number[i]);  //回退到上一层的环境
                    }

                    flag=true;

                }
        }


        dfs(0,4);

        console.log(shu.length);


其实最重要的代码就是上面

if(flag){
state.push(number[i]);  //保存当前环境
dfs(step+1,n);
state.pop(number[i]);  //回退到上一层的环境
}

如果分析清楚,就没啥难度啦!


链接: https://fly63.com/article/detial/2832

用for...in 和Object.keys()枚举对象属性的差异

用for...in循环和Object.keys方法都可以获取对象的属性,那么它们有什么区别呢?getOwnPropertyNames方法输出的结果中还包含了对象的不可枚举属性,可以通过Object.propertyIsEnumerable来判断属性是否可枚举从而对结果进行过滤

PHP实现枚举

在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。

TypeScript 枚举

数字类型枚举:常规枚举的值都是数字类型,因此被称为数字类型枚举;改变与数字枚举关联的数字:默认情况下,第一个枚举值是 0,后续的值会递增。

TypeScript-枚举

枚举是对JavaScript标准数据类型集的扩充,常被用来限定在一定范围内取值的场景。在TypeScript中支持数字和字符串的枚举。我们可以用enum来实现。字符串枚举中没有自增的特性,我们在初始化的时候必须给每一个成员都设字符串。

JS模拟实现枚举

在当前的javascript中,并没有枚举这个概念,在某些场景中使用枚举更能保证数据的正确性,减少数据校验过程,下面就介绍一下javascript如何模拟实现枚举效果。

TypeScript 枚举类型用法示例

使用枚举类型可以允许我们定义一些带名字的常量,也可以清晰地表达意图或创建一组有区别的用例。在 TypeScript 中,支持数字的和基于字符串的枚举。

TypeScript 枚举指南

枚举是受 TypeScript 支持的数据类型。枚举允许您定义一组命名常量。使用它们可以更轻松地记录意图或创建一组不同的案例。枚举大多数用于面向对象的编程语言(如 Java 和 C#)中

TS支持数字枚举和基于字符串的枚举

枚举的好处是,我们可以定义一些带名字的常量,而且可以清晰地表达意图或创建一组有区别的用例,TS支持数字的和基于字符串的枚举,首先来看数字枚举

用 JavaScript 编写枚举的最有效方法

假设有这样一个场景,我们需要统计员工的技术栈,目前我们需要标记的技术有 CSS、JavaScript、HTML、WebGL。然后我可以这样写枚举:

前端枚举enum的应用(Element)封装

枚举 Enum是在众多语言中都有的一种数据类型,JavaScript中还没有(TypeScript有)。用来表示一些特定类别的常量数据,如性别、学历、方向、账户状态等,项目开发中是很常用的。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!