今天在写一个混合开发版的app,其中一个功能是扫描快递单号,客户要求不能扫描重复的快递单号!所有就验证查出。

首先实现思路就是:

1.定义一个全局数组变量:var nubList = [];

2.进入该扫描页面先查找已扫描的数据。

3.扫描快递单号成功回调里根据当前扫描结果查重。存在择提示已存在。不存在择进行添加快递单列表。

这就是一个简单的实现思路。本篇不是一个什么记录就是一个随笔记录。

以前我查重大多是使用循环进行遍历对比。下面是我这次使用的数组示例find方法。

数组示例find:用于查找数组中第一个符合条件的对象返回。其实实现原来也是每个数组元素对比遍历,这个方法传进去一个回调函数,元素依次调用回调函数(可能看起来爽吧)。

var nubList = [{
expressId: "00001", //快递单号ID
expressNum: "数据1"
},
{
expressId: "00002", //快递单号ID
expressNum: "数据2"
},
{
expressId: "00003", //快递单号ID
expressNum: "数据3"
},
{
expressId: "00004", //快递单号ID
expressNum: "数据4"
},]; //增加单号查重操作
if(nubList.find(function(x) {
return x.expressId == result;
}) != undefined) {
mui.alert("该快件已经录入!", function() {
//重新开启继续扫描
scan.start();
})
return;
}

注意其中nubList.find(function(x) {return x.expressId = result;}) 就是查询结果了。如果查询不到择返回undefined

小技巧: 

最后我在补充几个小方法(从官网看到的比较常用的):

findIndex:查找第一个符合元素的位置(注意是位置不是元素);arr.findIndex(v,index,arr){}

reverse:将数组元素位置倒置。简单来说就是反转一下,第一个成最后一个,最后一个成第一个。

join:将数组连接到一个字符串中。此方法也可以传入分割参数

	var a=["one","two","three"]
a.join("|");
//"one|two|three" 结果

splice:在指定位置添加/修改元素;简单理解就是没有就添加,存在就删除替换调。arr.splice(开始位置,移除数目,元素)

push:再远末尾插入元素。

扩展数组根据指定元素删除:

 //扩展数组删除
Array.prototype.indexOf = function (val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
}; Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};

2018-07-31补充

今天再次使用到这个方法,但是不同的是我需要在ie下进行兼容测试,不幸的是还真的就不通过,提示“对象不支持“find”属性或方法”。不行那就不用吧,我们换个:filter

在数组处理上filter和find实现的功能是类似的。所有如果是在ie下使用请切换成filter方法:nubList.filter(function(x) {return x.expressId = result;})

在元素筛选上filter是对自身的查找,find是对子集的查找。例如:

            <div class="css">
<p class="test">测试1</p>
</div>
<div class="test">
<p >测试2</p>
</div>

然后分别查询:

filter=>$("div").filter(".test") 输出结果是:“<p >测试2</p>”

find=>$("div").filter(".test") 输出结果是:测试1

【前端】js中数组对象根据内容查找符合的第一个对象的更多相关文章

  1. js中数组对象根据内容查找符合的第一个对象

    今天在写一个混合开发版的app,其中一个功能是扫描快递单号,客户要求不能扫描重复的快递单号!所有就验证查出. 首先实现思路就是: 1.定义一个全局数组变量:var nubList = []; 2.进入 ...

  2. JS中数组对象去重

    JS数组去重 JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉 ...

  3. js 中数组对象的定义赋值 以及方法

    1.定义数组 var m=new Array(); var n=[]; 2.数组的赋值(两种) A. var m=new Array(2); 一个值表示数组length var m=new Array ...

  4. js中数组对象去重的方法

    var arr = [{ key: '01', value: '乐乐' }, { key: '02', value: '博博' }, { key: '03', value: '淘淘' },{ key: ...

  5. JavaScript中数组对象详解

    Array对象即数组对象用于在单个变量中存储多个值,JS的数组是弱类型的,所以允许数组中含有不同类型的元素,数组元素甚至可以是对象或者其他数组. 创建数组的语法 1.Array构造器 1.var li ...

  6. 浅解析js中的对象

    浅解析js中的对象 原文网址:http://www.cnblogs.com/foodoir/p/5971686.html,转载请注明出处. 前面的话: 说到对象,我首先想到的是每到过年过节见长辈的时候 ...

  7. js中遍历对象的属性和值

    今天想看一下js的数组遍历的内容,搜索到了一个关于对象遍历写好的函数,保留一下.以后好用. function allPrpos ( obj ) {   // 用来保存所有的属性名称和值   var p ...

  8. JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘

    一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实 ...

  9. JS中数组的介绍

    一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...

随机推荐

  1. 19南昌网络赛L

    校赛打杂没施展开. 题意:一开始给你一颗 (0,0)到(0,l)的树. 这棵树每一年会长出来三个幼芽(雾),长度均为l/4,方向分别是左转60,右转60,和不变. 年份<=14 考虑3^14直接 ...

  2. python多版本管理工具(pyenv)

    在学习和利用python开发的很多情况下,需要多版本的Python并存.此时需要在系统中安装多个Python,但又不能影响系统自带的 Python.pyenv 就是这样一个 Python 版本管理器. ...

  3. requirejs + sass 实现的前端及 grunt 自动化构建

    对于 现在的 vue . react .webpack 来说也许有点旧了,有时候,越简单的技术越可靠,备份一下 module.exports = function(grunt) { // Projec ...

  4. NeuChar 平台使用及开发教程(五):使用 NeuChar 的关键字回复服务

    在上一篇<NeuChar 平台使用及开发教程(四):使用 NeuChar 的素材服务>中,我们已经完成了素材的添加,下面,让我们来设置一个关键字回复,并同步到应设置好Neural Endi ...

  5. 安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?

    一.首先检查我们的代码: FirstActivity.java(主活动程序当中的代码):Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行 ...

  6. Go语言反射reflect

    目录 通过反射获取类型信息 理解反射的类型(Type)与种类(Kind) reflect.Elem() - 通过反射获取指针指向的元素类型 通过反射获取结构体的成员类型 通过反射获取值信息 使用反射值 ...

  7. MySQL 数据库在 Windows 下修复 only_full_group_by 的错误

    本机上新安装了个MySQL数据库,在插入数据的时候一直提示这个错误: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY ...

  8. 写给大忙人的centos下ftp服务器搭建(以及启动失败/XFTP客户端一直提示“用户身份验证失败”解决方法)

    注:个人对偏向于底层基本上拿来就用的应用,倾向于使用安装包,直接yum或者rpm安装:而对于应用层面控制较多或者需要大范围维护的,倾向于直接使用tar.gz版本. 对于linux下的ftp服务器,实际 ...

  9. C 基于数组存储的堆栈实现

    一.堆栈简介 对于需要管理的队列,主要操作是在序列的末尾插入和取出(删除)元素,有这样操作要求的序列我们称之为堆栈(Stack). 堆栈可以认为是具有一定约束的线性表,插入和删除都作用在一个称为栈顶( ...

  10. [Swift]LeetCode174. 地下城游戏 | Dungeon Game

    The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...