如果另一个数组中存在一个数组上的值,则返回数组

时间:2016-12-23 09:03:35

标签: javascript

我有两个包含一些数字的数组

 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
      }

我如何搜索并创建一个包含姓名和号码的数组?

4 个答案:

答案 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);
       });

 });