如何在多维数组中查找重复值
how do find duplicate values in a multidimensional array
我在这里遇到麻烦了;我想从数组中收集所有重复的值。
修改示例:
Array [
{
first: array[ 24, 58],
last: array[ 25, 59 ]
},
{
first: array[ 25, 59],
last: array[ 23, 57]
},
{
first: array[ 25, 59],
last: array[ 26, 54]
},
{
first: array[ 23, 58],
last: array[ 22, 58]
},
{
first: array[ 22, 58],
last: array[ 23, 54]
},
Object, Object, Object, Object, Object, /*98 more…*/ ]
如果脚本找到类似的值,则应该将它们推送到另一个数组。
var arrayCollect = []
arrayCollect.push([similar values]);
结果示例
arrayCollect=[[similar values], [similar values]];
相似值是相似值([Object, Object...]
)的整个集合
我试过这个:
var array =[];
for(var i=0; i < arrayLastFirst.length; i++){
if(arrayLastFirst[i].first[0] &&
arrayLastFirst[i].first[1] ==
arrayLastFirst[i].last[0] &&
arrayLastFirst[i].last [1]) {
array.push(arrayLastFirst[i].first, arrayLastFirst[i].last);
}
}
但这是不正确的,我不知道错在哪里,我怀疑是错误的逻辑。我修改了我的代码,以便更好地理解我最终想要的内容。所以我的输出需要是这样的:
Array[
[
{
first: array[ 24, 58],
last: array[ 25,59]
},
{
first: array[ 25, 59],//its inside that array couse the first value is the same like the last value before that.
last: array[ 23,57]
},
{
first: array[ 25, 59],
last: array[ 26, 54]
}
],
[
{
first: array[ 23, 58],
last: array[ 22, 58]
},
{
first: array[ 22, 58],
last: array[ 23, 54]
}//and these are similar values couse last and the first are the same
]
]
也许这更能理解我最终所需要的。
假设您有以下数据:
var arrayLastFirst = [
{first: [1, 2], last: [3, 4]},
{first: [5, 6], last: [6, 7]},
{first: [0, 8], last: [8, 9]}
];
此测试条件
arrayLastFirst[i].first[0] &&
arrayLastFirst[i].first[1] == arrayLastFirst[i].last[0] &&
arrayLastFirst[i].last[1]
意味着你想要
- 的元素0第一个不为null
- 与最后的元素1进行AND运算,使其不为null
- 与第一个的元素1进行AND运算,使其等于最后一个
这导致了这个阵列:
array == [[5, 6], [6, 7]];
我认为您只需要在循环中放入一个循环。因此,您要获取要比较的第一个数组,并在整个数组中循环,记住不要将其与自身匹配。比你抓住第二个,并将其与整个阵列等进行比较。
for (i = 0; i < arrayLastFirst.length; i++) {
for (f = arrayLastFirst.length; f++ {
if( arrayLastFirst[0][i] == arraLastFirst[0][f] ||
arrayLastFirst[0][i]== arrayLastfirst[0][f] )
}}
编辑:很抱歉,错误的代码已经习惯了stackerflow,但这不检查你可以把if i==i放在那里,以防止与本身进行比较
这样的东西?
var sources = [
{
first: [ 23.53521729574, 58.94867816392],
last: [ 24.5368636, 59.9483547 ]
},
{
first: [ 24.53521729574, 59.94867816392],
last: [ 23.5368636, 58.9483547 ]
},
{
first: [ 23.5368636, 58.9483547],
last: [ 23.5368636, 58.9483547]
},
{
first: [ 23.53521729574, 58.9483547],
last: [ 23.5368636, 58.9483547]
},
{
first: [ 23.5368636, 58.9483547],
last: [ 23.5368636, 58.9483547]
},
{
first: [ 23.53521729574, 58.9483547],
last: [ 23.5368636, 58.9483547]
},
{
first: [ 23.53521729574, 58.9483547],
last: [ 23.5368636, 58.9483547]
}
];
var results = {};
for(var z in sources) {
var sz = sources[z];
if(!results[sz.last]) {
results[sz.last] = {keys:[],similar:[]}
}
results[sz.last].keys.push(sz); // add all to .keys anything with same .last
}
for(var z in sources) {
var sz = sources[z];
var exists = results[sz.first];
if(exists) {
exists.similar.push(sz); // add all to .similar anything with same .first
}
}
console.log(JSON.stringify(results,null,2))
结果:
{
"24.5368636,59.9483547": {
"keys": [
{
"first": [
23.53521729574,
58.94867816392
],
"last": [
24.5368636,
59.9483547
]
}
],
"similar": []
},
"23.5368636,58.9483547": {
"keys": [
{
"first": [
24.53521729574,
59.94867816392
],
"last": [
23.5368636,
58.9483547
]
},
{
"first": [
23.5368636,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
},
{
"first": [
23.53521729574,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
},
{
"first": [
23.5368636,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
},
{
"first": [
23.53521729574,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
},
{
"first": [
23.53521729574,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
}
],
"similar": [
{
"first": [
23.5368636,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
},
{
"first": [
23.5368636,
58.9483547
],
"last": [
23.5368636,
58.9483547
]
}
]
}
}
相关文章:
- Lodash 从值数组中查找数组中的值
- 使用JS查找数组的平均值
- 查找数组javascript中包含的元素类型
- Undercore:查找数组中出现频率最高的对象
- 查找数组's按属性不存在于另一个数组中的对象
- 查找数组中项目包含子字符串的索引
- 按键查找数组中对象的索引
- 按链中的键查找数组元素
- 使用JavaScript查找数组中最近的日期
- 在Javascript中查找数组长度
- 正在查找数组中第一个匹配元素的索引
- Rhino 1.5 R5在查找数组差异时未正确评估JavaScript
- 查找数组值
- 如何在javascript中按属性查找数组中的对象
- 如何使用JavaScript查找数组中的最早日期
- 查找数组中最长的单词/字符串
- 如何查找数组中所有出现的元素的索引(Ramda.js方式)
- 查找数组中的下一个最高数字 - jquery
- 如何查找数组中另一个对象旁边的对象
- 按键查找数组中最接近的 2 个元素