如何从jquery中的两个json数组获取元素 [英] How to take element from two json arrays in jquery
本文介绍了如何从jquery中的两个json数组获取元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
arr1 = [
{Lattitude: '52,4043000', Location: 'a2', Longitude: '55,7181815'},
{Lattitude: '52,3882320', Location: 'b2', Longitude: '55,7225500'},
{Lattitude: '52,4041184', Location: 'c2', Longitude: '55,7172296'},
{Lattitude: '52,3996194', Location: 'd2', Longitude: '55,7200249'},
];
arr2 = [
{Lattitude: '52,3882320', Location: 'b2', Longitude: '55,7225500'},
{Lattitude: '52,4041184', Location: 'c2', Longitude: '55,7172296'},
{Lattitude: '52,3996194', Location: 'd2', Longitude: '55,7200249'}
];
我如何比较两个json数组arr1,arr2一个只是这个元素 {Lattitude:'52,4043000',Location:'a2',Longitude:'55,7181815'}
来自arr1,在arr2中没有
how i can compare two json arrays arr1,arr2 an get just this element {Lattitude: '52,4043000', Location: 'a2', Longitude: '55,7181815'}
from arr1 which no in arr2
我会尝试这样做
function objDiff(arr1, arr2) {
var resultArray = [];
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; arr2.length; j++) {
if (parseFloat(parseFloat(arr1[i].Lattitude).toFixed(4)) != parseFloat(parseFloat(arr2[i].Lattitude).toFixed(4)) &&
parseFloat(parseFloat(arr1[i].Longitude).toFixed(4)) != parseFloat(parseFloat(arr2[i].Longitude).toFixed(4))) {
resultArray.push(arr1[i]);
}
}
}
return resultArray;
}
但我的功能不工作,我不知道为什么
but my function not works, i don`t know why
推荐答案
尝试此操作,
function compareArr(arr1, arr2) {
var longArray = arr1.length >= arr2.length ? arr1 : arr2;
var shortArray = arr1.length < arr2.length ? arr1 : arr2;
return resultArr = longArray.filter(function (v) {
return shortArray.filter(function (iv) {
return v.Lattitude === iv.Lattitude
&& v.Location === iv.Location
&& v.Longitude === iv.Longitude;
}).length === 0;
});
}
var resultArr = compareArr(arr2, arr1);
在任何序列中将两个数组传递给此函数,结果将是相同的。
Pass two array to this function in any sequense, the result will be same.
这篇关于如何从jquery中的两个json数组获取元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文