一、数组添加不重复的值
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;
}
};