利用eval给数组扩展表达式查询

Array.prototype.IndexOf = function (exp) {
            var isexp = exp.indexOf(‘=>‘) > -1, bef = isexp ? exp.split(‘=>‘)[0] : ‘‘, expstr = isexp ? exp.split(‘=>‘)[1].replace(new RegExp(bef, ‘g‘), ‘this[i].‘) : ‘‘;
            for (var i = 0; i < this.length; i++) {
                if (isexp && eval(expstr)) {
                    return i;
                } else {
                    if (this[i] == exp) {
                        return i;
                    }
                }
            }
            return -1;
        };

  

使用:

var arr = [{ a: 1, b: 2 }, { a: 23, b: 987 }, { a: 23, b: 9837 }, { a: 2113, b: 987 }];

        var arr2 = [1,2,3,4,5];

        console.log(arr2.indexOf(4)); //return 3

        console.log(arr.indexOf("m=>m.a==23&&m.b==987")); //return 1

时间: 2024-11-01 23:53:37

利用eval给数组扩展表达式查询的相关文章

CRL快速开发框架系列教程二(基于Lambda表达式查询)

本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框架系列教程四(删除数据) CRL快速开发框架系列教程五(使用缓存) CRL快速开发框架系列教程六(分布式缓存解决方案) CRL快速开发框架系列教程七(使用事务) CRL快速开发框架系列教程八(使用CRL.Package) CRL快速开发框架系列教程九(导入/导出数据) CRL快速开发框架系列教程十(

js数组lambda表达式

1 //js数组lambda表达式 2 //单个对象 3 var nubList = eval(data2[0]); 4 var nub = nubList.find(nub => nub.expressId == "00002"); 5 console.log(nub.expressId); 6 //查找数组 7 var nub1 = nubList.filter(nub => nub.expressId == "00002"); 8 console.

数组扩展

数组扩展 function *g () { console.log(1) yield 'one' console.log(2) yield 'two' } const gg = g() gg.next() setTimeout(function(){ gg.next() },1000) 在第一次使用gg.next()时运行,知道第二个gg.next()出现在运行第二段 let set = new Set([1,2,5,3,4]) // 返回一个数组 console.log(set) let ar

thinkphp的普通查询与表达式查询

一.普通查询方式 a.字符串:$arr=$m->where("sex=0 and username='gege'")->find();//字符串需要加引号 b.数组 $data['sex']=0; $data['username']='gege'; $arr=$m->where($data)->find();//传上一个数组进行查询,这种方式默认是and(并且)的关系 注意:如果使用or关系,需要添加数组值 $data['sex']=0; $data['user

thinkphp 表达式查询

上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式: $map['字段名'] = array('表达式','查询条件'); 大理石平台规格 表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是: 表达式 含义 协助记忆 EQ 等于(=) equal NEQ 不等于(<>) not equal GT 大于(>) greater EGT 大于等于(>=) equal or greater

ES6浅谈--数组扩展、对象扩展

数组扩展 1.includes()方法,参数为要检测的值.includes方法有点像indexOf(),indexOf未检测到则返回-1,否则返回下标.includes则是返回true或false.includes可以检测NaN.第二个参数表示从什么位置检测. 2.flat和flatMap.flat负责把数组拉平,意思是一个二维数组调用flat方法会变成一维数组.参数传的是数组的维度.例如传2则表示将3维拉成1维.如果数组中有空位则跳过.flatMap有点像flat方法和Map方法的结合.先对每

小游戏●贪吃蛇1(利用二维数组制作)

利用二维数组编写简单贪吃蛇小游戏,由于是初学C#,用的是单线程,所以蛇不会自动前进 代码及简要分析如下: 1 //定义地图,0为空,1为墙,2为蛇,3为食物 2 int[,] map = new int[15, 15]{ 3 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 4 {1,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, 5 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, 6 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

ES6数组扩展

前面的话 数组是一种基础的JS对象,随着时间推进,JS中的其他部分一直在演进,而直到ES5标准才为数组对象引入一些新方法来简化使用.ES6标准继续改进数组,添加了很多新功能.本文将详细介绍ES6数组扩展 创建数组 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面量语法,这两种方法均需列举数组中的元素,功能非常受限.如果想将一个类数组对象(具有数值型索引和length属性的对象)转换为数组,可选的方法也十分有限,经常需要编写额外的代码.为了进一步简化JS数组

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志