node.js 数组添加不重复的值和判断数值是否在数组里

博客围绕Node.js展开,介绍了数组操作相关内容。包括数组添加不重复值的封装方法及调用,还提及判断数值是否在数组里的封装方法与测试,最后附上了Node项目的部分源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组添加不重复的值

      1.处理不重复的封装方法

Array.prototype.excelAreaName =function(){
    for(var i=0; i < arguments.length; i++){
      var ele = arguments[i];
      if(this.indexOf(ele) == -1){
          this.push(ele);
      }
  }
}; 

     2.调用

let obj = ['海淀区','朝阳区','通州区','海淀区','朝阳区','通州区']
let excelareaArr = [];
for (var i= 0;i< obj.length; i++) { 
    excelareaArr.excelAreaName(obj[i])
}

此时excelareaArr数组只有海淀区、朝阳区和通州区

注意:excelareaArr数组调用的excelAreaName要和封装的方法名称对应一致。

参考: https://www.cnblogs.com/fanbi/p/9013415.html


二、判断数值是否在数组里

      1.封装的方法

function contains(arr, obj) {
    var i = arr.length;
    while (i--) {
        if (arr[i] === obj) {
            return true;
        }
    }
    return false;
}

      2.测试

let areaArr= ['海淀区','朝阳区','通州区']
let areaName = '海淀区';
if (contains(areaArr, areaName )) {
     console.log(areaName + '在areaArr数组里');
 } else {
     console.log(areaName + '不在areaArr数组里');
}

三、附上node项目的部分源码

'use strict';

const conn = require('../../libs/Conn');
const path = require('path');
const fs = require('fs');
const _ = require('underscore');
const constarctCheck = require('./contractCheck');
const XLSX = require('../../../services/import/XLSX');
const exportXLSX = require('../../../services/export/PointSelectedXLSX');
const contractAdd = require('../../actions/contract/contractAdd');
//20190311
const interUtil = require('../../libs/InterUtil').isChinseOrEnglish;

//判断是否包含
function contains(arr, obj) {
    var i = arr.length;
    while (i--) {
        if (arr[i] === obj) {
            return true;
        }
    }
    return false;
}

Array.prototype.excelAreaName =function(){
    for(var i=0; i < arguments.length; i++){
      var ele = arguments[i];
      if(this.indexOf(ele) == -1){
          this.push(ele);
      }
  }
}; 

module.exports = async function (params) {
    try {
        //20190311
        let language_type = params.language_type;
        let col = await interUtil(language_type);
        let uploadFile = params.upload_file;
        let file = uploadFile.shift();
        let path = file.path; 
        let fileSplit = path.split('.');
        let fileType = fileSplit[fileSplit.length - 1];
        let obj = await XLSX(path);
        if (obj.length < 1) {
            return {success: false, message: col.not_exportdata};
        }
        obj.splice(0, 2);
        let areaSql = `SELECT area_name
                            FROM area_file 
                            WHERE parent = '${params.area_id}' 
                            AND delete_sign = 1`;

        /*--------------------进入重点-----------------------*/
        if (obj) {
            //excel中的区域数组
            let excelareaArr = [];
            obj.forEach(function (o) {
                excelareaArr.excelAreaName(o.__EMPTY_4)
             });
             //获取此用户权限内的区域数组
             let areas =  await conn(areaSql, []);
             let areaArr = [];
             areas.forEach(function (area, index) {
                areaArr.push(area.area_name)
             });
             //判断excel中的数组都包含在权限数组areaArr中,若是可导入,否则不能导入。
             for (var i= 0;i< excelareaArr.length; i++) { 
                if (!contains(areaArr, excelareaArr[i])) {
                    return {message: '请导入用户符合权限的区域!'};
                }
             }
   
        }
         /*--------------------结束-----------------------*/
        let idsArr = _.map(obj, function (item) {
            return item[col.tikinmedia];
        });
        params.idsArr = idsArr;
        //.................
        return {success: true, fileName: params.fileName};

    } catch (e) {
        if (fs.existsSync(path)) fs.unlinkSync(path);
        throw e;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值