我有两个包含一些数字的数组
All Mateys
[{
'names':'Lot',
'number':'0800695828'
},
{
'names':'Voltaire',
'number':'0800069005'
}]
Invited Mateys ["0800695828", "0800069005"]
所有Mateys阵列都包含一个名单和成员数量的大名单,而邀请的mateys只保留受邀成员数量。
我想使用邀请的mateys数组来创建一个数组,其中包含数组中所有mateys的名称和编号。简而言之,我想返回一个包含名称和数字的数组,其中包含一个存在于受邀数组中的数字。
我可以像这样迭代邀请的mateys
for(var i = 0; i < invited_mateys.length; i++){
var invited_matey_number = invited_mateys[i];
console.log(invited_matey_number);
//search for this number in all mateys and create an arrr
}
我如何搜索并创建一个包含姓名和号码的数组?
答案 0 :(得分:3)
您可以使用filter()
和indexOf()
来检查第二个数组中是否存在数字。
var arr1 = [{
'names': 'Lot',
'number': '0800695828'
}, {
'names': 'Voltaire',
'number': '0800069005'
}]
var arr2 = ["0800695828", "0800069005"]
var result = arr1.filter(function(o) {
return arr2.indexOf(o.number) != -1
})
console.log(result)
答案 1 :(得分:1)
使用jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
var All_Mateys = [{'names':'Lot','number':'0800695828'},{'names':'Voltaire','number':'0800069005'}];
var Invited_Mateys = ["0800695828", "0800069005"];
var final_array = [];
for(var key in All_Mateys){
if($.inArray(All_Mateys[key]['number'],Invited_Mateys)!==-1){
final_array.push(All_Mateys[key]);
}
}
console.log(final_array);
</script>
只需遍历All_Mateys
并将每个数字与Invited_Mateys
中的数字相匹配,如果找到匹配项,则将完整的子数组插入新的结果数组中。
我希望它有所帮助
答案 2 :(得分:1)
var superset = [{
'names':'Lot',
'number':'0800695828'
},
{
'names':'Voltaire',
'number':'0800069005'
}];
var subset = ["0800695828", "0800069005"];
formArr(superset,subset);
function formArr(superset,subset){
var newArr = [];
for(var i =0;i< superset.length;i++){
if(subset.indexOf(superset[i].number)!=-1){
newArr.push(superset[i]); }
}
console.log(newArr);
return newArr;
}
function formArr将返回具有所需结果的新数组。希望它有帮助!
答案 3 :(得分:0)
你可以试试这个
var newArr = [];
$(function () {
var AllMateys =
[{
'names': 'Lot',
'number': '0800695828'
},
{
'names': 'Voltaire',
'number': '0800069005'
},
{
'names': 'SomeName',
'number': '12345'
}]
var InvitedMateys = ["0800695828", "0800069005"];
AllMateys.filter(function (obj) {
if (InvitedMateys.indexOf(obj.number) > -1)
newArr.push(obj);
});
});