JS的直觉方案:
对于数组去重,只要写过程序的,立刻就能得到第一个解法:
function unique(arr) {
var ret = []
for (var i = 0; i < arr.length; i++) {
var item = arr[i]
if (ret.indexOf(item) === -1) {
ret.push(item)
}
}
return ret
}
优化方案:
核心是构建了一个 hash 对象来替代 indexOf. 注意在 JavaScript 里,对象的键值只能是字符串,因此需要 var key = typeof(item) + item 来区分数值 1 和字符串 ‘1’ 等情况
function unique(arr) {
var ret = []
var hash = {}
for (var i = 0; i < arr.length; i++) {
var item = arr[i]
var key = typeof(item) + item
if (hash[key] !== 1) {
ret.push(item)
hash[key] = 1
}
}
return ret
}
灵活应用:
totalIncomeList =[]; //模拟数据
totalIncomeList.push({tranDate:'20180023',tranAmt:'1100'})
totalIncomeList.push({tranDate:'20171122',tranAmt:'1100'})
totalIncomeList.push({tranDate:'20190345',tranAmt:'300'})
totalIncomeList.push({tranDate:'20171232',tranAmt:'1540'})
totalIncomeList.push({tranDate:'20171230',tranAmt:'1540'})
//排序算法.
if(totalIncomeList && totalIncomeList.length>0){
for(let i = 0 ; i<totalIncomeList.length; i++){
for(let j = 0; j <totalIncomeList.length-i-1; j++){
let firtStr = totalIncomeList[j].tranDate.substring(0,4);
let lastStr = totalIncomeList[j+1].tranDate.substring(0,4);
if(firtStr < lastStr){
let temp = totalIncomeList[j + 1];
totalIncomeList[j+ 1] = totalIncomeList[j];
totalIncomeList[j] = temp;
}
}
}
//去重算法
var ret = [];
for(let y=0;y<totalIncomeList.length;y++) {
let item = totalIncomeList[y].tranDate.substring(0,4);;
if (ret.indexOf(item) === -1) {
ret.push(item)
totalIncomeList[y].isHeader =true;
}else{
totalIncomeList[y].isHeader =false;
}
}
ReactNative做的app的显示效果:
===========完美分割线=====================
赘述:JAVA中的数组去重。
- 方式1
package com.panda;
import java.util.Arrays;
public class Test3 {
public int removeDuplicates(int[] nums) {
if (nums == null)
return 0;
if (nums.length == 1)
return 1;
int current = 0;
int next = 1;
int len = nums.length;
while (next < len) {
if (nums[next] == nums[current]) {
for (int j = next; j < len - 1; j++) {
nums[j] = nums[j + 1];
}
len--;
}
if (nums[next] != nums[current]) {
next++;
current++;
}
}
return len;
}
public static void main(String[] args) {
int [] rows ={3,5,3,5,1,2,7,2};
int removeDuplicates = new Test3().removeDuplicates(rows);
System.out.println(removeDuplicates);
}
}
- 方式2
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestList {
public static void main(String[] args) {
/**
*List: 可以按顺序存放你存入的数据,当你删除第 N 个元素后, N 后边的元素会逐个向前移
*Set:是无序存放你存入的数据, 需要使用键值对
*
* 你可以通过使用下边的方式 去除一个 List 内重复的数据
*/
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3 );
Set set = new HashSet<Integer>(list);
list = new ArrayList<Integer>(set);
System.out.println(list);
}
}
- 方式N …