json数组去重(数组里是json,怎么去重)

:暂无数据 2026-06-04 20:20:01 :0

json数组去重(数组里是json,怎么去重)

“json数组去重”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看json数组去重(数组里是json,怎么去重)!

本文目录

数组里是json,怎么去重

代码如下:
/**
* 去重复index_id项合并value值
* @param args
*/
public static JSONArray delRepeatIndexid(JSONArray array) {

JSONArray arrayTemp = new JSONArray();

int num = 0;
for(int i = 0;i 《 array.size();i++){
if(num==0){
arrayTemp.add(array.get(i));
}else{
int numJ = 0;
for(int j = 0;j 《 arrayTemp.size(); j++){
JSONObject newJsonObjectI = (JSONObject)array.get(i);
JSONObject newJsonObjectJ = (JSONObject)arrayTemp.get(j);
String index_idI = newJsonObjectI.get(“index_id“).toString();
String valueI = newJsonObjectI.get(“value“).toString();
String timeI = newJsonObjectI.get(“time“).toString();
String itemidI = newJsonObjectI.get(“itemid“).toString();

String index_idJ = newJsonObjectJ.get(“index_id“).toString();
String valueJ = newJsonObjectJ.get(“value“).toString();

if(index_idI.equals(index_idJ)){
int newValue = Integer.parseInt(valueI) + Integer.parseInt(valueJ);
arrayTemp.remove(j);
JSONObject newObject = new JSONObject();
newObject.put(“index_id“, index_idI);
newObject.put(“itemid“, itemidI);
newObject.put(“time“, timeI);
newObject.put(“value“, newValue);
arrayTemp.add(newObject);
break;
}
numJ++;
}
if(numJ-1 == arrayTemp.size()-1){
arrayTemp.add(array.get(i));
}
}

num++;
}
return arrayTemp;
}

关于如何去除数组中重复项

数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程。

从这句话揭示了数组去重的两个关键因素:

找到重复项

去除重复项

本文告诉你在遇到去重问题时该如何思考,并以 JavaScript 为例,进行详细解释。使用 JavaScript 示例主要是因为它环境比较好找,而且直接对象 (Plain Object) 用起来很方便。

JavaScript 的环境:Node.js 或者浏览器的开发者控制台。

找到重复项
找到重复项最关键的算法是判定元素是否相同。判定相同,说起来似乎很简单 —— 用比较运算符就好了嘛!真的这么简单吗?

用 JavaScript 来举个例:

const a = { v: 10 };
const b = { v: 10 };
肉眼观察,这里的a和b相同吧?但是 JavaScript 不这么认为:

console.log(a == b); // false
console.log(a === b); // false
肉眼观察和程序比较使用了不同的判断方法。肉眼观察很直接的采用了字符串比对的方法,而程序压根没管是不是数据相同,只是直接判断它们是不是同一个对象的引用。我们一般会更倾向于使用符合人眼直观判断的方法,所以可能会想到使用JSON.stringify()把对象变成字符串来判断:

console.log(JSON.stringify(a) === JSON.stringify(b)); // true
现在如果我们把a和b略作改变,又该如何?

const a = { v: 10, n: “1“ };
const b = { n: “1“, v: 10 };
乍一看,a和b不同。用JSON.stringify()的结果来比对,也确实不同。但是仔细一看,他们的属性是完全相同的,唯一的区别在于属性的顺序不一样。那么到底顺序应不应该作为一个判断相同的依据呢?

这个问题现在真没法回答。“该如何”取决于我们的目标,也就是业务需求。

从上面的例子我们可以了解:判断相同并不是一个简单的事情,根据不同的业务要求,需要选择不同的判断方法;而不同的判断方法,可能产生不同的判断结果。

接下来先讲讲常见的判断方法。

最直接的:比较运算符
比较运算符主要用于比较基本类型的值,比如字符串、数、布尔等。

普通比较运算符 (==) 在比较不同类型的值时,会先把它们转换为相同类型再来比较;而严格比较运算符 (===) 则更为严格,会直接将类型不同值判定为不同。这些都是基本的 JavaScript 语法知识。现代开发中为了能更好的利用工具,除极少数特殊情况外,都应该使用===来进行判断。尤其是在 TypeScript 中,几乎都不会出现==了。

JavaScript 中,比较运算符不会比较对象属性,只会比较对象的引用是否相同。如果要比较对象具体信息,需要用到接下来讲到的方法。

JS数组去重的几种常见方法

js 数组去重

1

注:应该也可以适用于 object数组,但是本人没有进行验证,贴出来仅供你参考

第一种是比较常规的方法思路:1.构建一个新的数组存放结果2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比3.若结果数组中没有该元素,则存到结果数组中代码如下:

Array.prototype.unique1 = function(){ var res = [this]; for(var i = 1; i 《 this.length; i++){ var repeat = false; for(var j = 0; j 《 res.length; j++){ if(this[i] == res[j]){ repeat = true; break; } } if(!repeat){ res.push(this[i]); } } return res;}var arr = [1, ’a’, ’a’, ’b’, ’d’, ’e’, ’e’, 1, 0]alert(arr.unique1());

第二种方法比上面的方法效率要高思路:1.先将原数组进行排序2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置3.如果不相同,则将该元素存入结果数组中代码如下:

Array.prototype.unique2 = function(){ this.sort(); //先排序 var res = [this]; for(var i = 1; i 《 this.length; i++){ if(this[i] !== res[res.length - 1]){ res.push(this[i]); } } return res;}var arr = [1, ’a’, ’a’, ’b’, ’d’, ’e’, ’e’, 1, 0]alert(arr.unique2());

二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。第三种方法(推荐使用)思路:1.创建一个新的数组存放结果2.创建一个空对象3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。代码如下:

Array.prototype.unique3 = function(){ var res = ; var json = {}; for(var i = 0; i 《 this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res;}var arr = [112,112,34,’你好’,112,112,34,’你好’,’str’,’str1’];alert(arr.unique3());

json数组如何去重

代码如下:
/**
* 去重复index_id项合并value值
* @param args
*/
public static JSONArray delRepeatIndexid(JSONArray array) {

JSONArray arrayTemp = new JSONArray();

int num = 0;
for(int i = 0;i 《 array.size();i++){
if(num==0){
arrayTemp.add(array.get(i));
}else{
int numJ = 0;
for(int j = 0;j 《 arrayTemp.size(); j++){
JSONObject newJsonObjectI = (JSONObject)array.get(i);
JSONObject newJsonObjectJ = (JSONObject)arrayTemp.get(j);
String index_idI = newJsonObjectI.get(“index_id“).toString();
String valueI = newJsonObjectI.get(“value“).toString();
String timeI = newJsonObjectI.get(“time“).toString();
String itemidI = newJsonObjectI.get(“itemid“).toString();

String index_idJ = newJsonObjectJ.get(“index_id“).toString();
String valueJ = newJsonObjectJ.get(“value“).toString();

if(index_idI.equals(index_idJ)){
int newValue = Integer.parseInt(valueI) + Integer.parseInt(valueJ);
arrayTemp.remove(j);
JSONObject newObject = new JSONObject();
newObject.put(“index_id“, index_idI);
newObject.put(“itemid“, itemidI);
newObject.put(“time“, timeI);
newObject.put(“value“, newValue);
arrayTemp.add(newObject);
break;
}
numJ++;
}
if(numJ-1 == arrayTemp.size()-1){
arrayTemp.add(array.get(i));
}
}

num++;
}
return arrayTemp;
}

java怎么去除JSON数组的重复值

对最佳回答进行修改,假设原始Json数组是这样的

原始JSONArry:[{“Value“:“15153129877“,“Key“:“09770985-9869-11e7-9c0d-fa163ef28f43“},{“Value“:“15153129877“,“Key“:“09770985-9869-11e7-9c0d-fa163ef28f43“}]

工具类如下:

/**
 * 根据Key去重复
 * @param array
 */
public static JSONArray delRepeatIndexid(JSONArray array) {
    JSONArray arrayTemp = new JSONArray();
    int num = 0;
    for(int i = 0;i 《 array.size();i++){
        if(num==0){
            arrayTemp.add(array.get(i));
        }else{
            int numJ = 0;
            for(int j = 0;j 《 arrayTemp.size(); j++){
                JSONObject newJsonObjectI = (JSONObject)array.get(i);
                JSONObject newJsonObjectJ = (JSONObject)arrayTemp.get(j);
                String index_idI = newJsonObjectI.get(“Key“).toString();
                String valueI = newJsonObjectI.get(“Value“).toString();
                String index_idJ = newJsonObjectJ.get(“Key“).toString();
                if(index_idI.equals(index_idJ)){
                    arrayTemp.remove(j);
                    JSONObject newObject = new JSONObject();
                    newObject.put(“Key“, index_idI);
                    newObject.put(“Value“, valueI);
                    arrayTemp.add(newObject);
                    break;
                }
                numJ++;
            }
            if(numJ-1 == arrayTemp.size()-1){
                arrayTemp.add(array.get(i));
            }
        }
        num++;
    }
    return arrayTemp;
}

处理结果

数据处理后JSONArry:[{“Value“:“15153129877“,“Key“:“09770985-9869-11e7-9c0d-fa163ef28f43“}]

完毕!!!!

js object数组去重

js 数组去重

注:应该也可以适用于 object数组,但是本人没有进行验证,贴出来仅供你参考

第一种是比较常规的方法

思路:

1.构建一个新的数组存放结果

2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比

3.若结果数组中没有该元素,则存到结果数组中
代码如下:

Array.prototype.unique1 = function(){
 var res = [this];
 for(var i = 1; i 《 this.length; i++){
  var repeat = false;
  for(var j = 0; j 《 res.length; j++){
   if(this[i] == res[j]){
    repeat = true;
    break;
   }
  }
  if(!repeat){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, ’a’, ’a’, ’b’, ’d’, ’e’, ’e’, 1, 0]
alert(arr.unique1());

第二种方法比上面的方法效率要高

思路:

1.先将原数组进行排序

2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置

3.如果不相同,则将该元素存入结果数组中
代码如下:

Array.prototype.unique2 = function(){
 this.sort(); //先排序
 var res = [this];
 for(var i = 1; i 《 this.length; i++){
  if(this[i] !== res[res.length - 1]){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, ’a’, ’a’, ’b’, ’d’, ’e’, ’e’, 1, 0]
alert(arr.unique2());



二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。

第三种方法(推荐使用)

思路:

1.创建一个新的数组存放结果

2.创建一个空对象

3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
代码如下:

Array.prototype.unique3 = function(){
 var res = ;
 var json = {};
 for(var i = 0; i 《 this.length; i++){
  if(!json[this[i]]){
   res.push(this[i]);
   json[this[i]] = 1;
  }
 }
 return res;
}
var arr = [112,112,34,’你好’,112,112,34,’你好’,’str’,’str1’];
alert(arr.unique3());

js如何处理两个json数组去除重复数据,然后合并数组,求大神帮忙解决下

var c = a.concat(b),//合并成一个数组
temp = {},//用于id判断重复
result = ;//最后的新数组
//遍历c数组,将每个item.id在temp中是否存在值做判断,如不存在则对应的item赋值给新数组,并将temp中item.id对应的key赋值,下次对相同值做判断时便不会走此分支,达到判断重复值的目的;
c.map((item,index)=》{
if(!temp[item.id]){
result.push(item);
temp[item.id] = true
}
})
console.log(result)

关于json数组去重和数组里是json,怎么去重的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

json数组去重(数组里是json,怎么去重)

本文编辑:admin

更多文章:


用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

各位老铁们,大家好,今天由我来为大家分享云备份,以及手机云备份是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 02:40

java遍历map的key(java Map 怎么遍历)

java遍历map的key(java Map 怎么遍历)

大家好,java遍历map的key相信很多的网友都不是很明白,包括java Map 怎么遍历也是一样,不过没有关系,接下来就来为大家分享关于java遍历map的key和java Map 怎么遍历的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月11日 02:20

微信xlsx文件怎么打开(苹果手机微信打开excel)

微信xlsx文件怎么打开(苹果手机微信打开excel)

大家好,关于微信xlsx文件怎么打开很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于苹果手机微信打开excel的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 01:10

reduce用法和短语(减少的英文短语有哪些)

reduce用法和短语(减少的英文短语有哪些)

其实reduce用法和短语的问题并不复杂,但是又很多的朋友都不太了解减少的英文短语有哪些,因此呢,今天小编就来为大家分享reduce用法和短语的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 00:40

c语言基本数据类型(c语言 基本数据类型)

c语言基本数据类型(c语言 基本数据类型)

大家好,如果您还对c语言基本数据类型不太了解,没有关系,今天就由本站为大家分享c语言基本数据类型的知识,包括c语言 基本数据类型的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 00:20

最近更新

another time(another time和other time的区别)
2026-10-11 05:00:02 浏览:0
java开发工具包jdk(JDK是什么意思)
2026-10-11 04:50:02 浏览:0
热门文章

标签列表