关于这个话题有很多问题,但我找不到直接解决我所遇问题的答案。
这是一个:Find common elements in 1 array using Javascript
第一个区别是我有一个不同类型的数组,它的元素是具有键值对的对象,其中key是字符串,值是整数数组。
第二个区别是数组是动态的意味着有时它可能有零个元素,有时它可能有3个对象元素。
我在下面分享示例数组:
const array = [
{"key1":[1,2,3]},
{"key2":[2,3,4]},
{"key3":[2,5,6]},
];
第三个区别是元素的顺序很重要,以便最终结果应该输出所有后续数组中存在的第一个元素的值。
结果应为:
const result = [2];
因为 2 是这三个元素中唯一的常见整数。
如上所述,数组有时可能只有1或2个或没有元素,这些情况应该计算在内。
编辑1 :正如评论中所要求的那样数组的值是唯一的
答案 0 :(得分:2)
由于值只能在数组中出现一次,因此您可以连接数组,计算出现次数,并过滤那些不等于原始数组长度的数据。
goToDeleteUser(email)
{ console.log(email);
let confirm = this.alertCtrl.create({
title: 'Are you sure you want to delete this user ?',
buttons: [
{
text: 'Delete',
handler: function(email)
{
console.log(email);
this.deleteUser(email);
}
}
]
});
confirm.present();
}
deleteUser(email)
{ console.log(email);
var userid;
firebase.database().ref().child('users').orderByChild('email').equalTo(email).on("child_added",(snapshot)=>{
userid=snapshot.val().uid}) ;
console.log(userid);
firebase.database().ref('users/userid').remove();
}
答案 1 :(得分:0)
您可以首先获取数组中的数组而不使用不同的键,然后查找每个元素(如果它位于另一个数组中)。
let array = [{ key1: [1, 2, 3] }, { key2: [2, 3, 4] }, { key3: [2, 5, 6] }],
result = array
.map(o => o[Object.keys(o)[0]] || [])
.reduce((a, b) => a.filter(c => b.includes(c)));
console.log(result);

答案 2 :(得分:0)
const array = [
{"key1":[1,2,3]},
{"key2":[2,3,4]},
{"key3":[2,5,6]},
];
您可以迭代并存储值在每个值的数组中出现的频率:
var common=new Map();
array.forEach(function(obj){
//var values=new Set(Object.values(obj)[0]);//make unique values out of array
var values=Object.values(obj)[0];//no need for uniqueness as OP states that they are already unique..
values.forEach(function(val){
common.set(val,(common.get(val)||0)+1);
});
});
现在你有一张包含所有元素及其在主数组中的外观的地图。所以现在你可以简单地比较:
var result=[];
common.forEach(function(appearance,el){
if(appearance===array.length){
result.push(el);
}
});