Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用TypeScript查找存在于另一个数组中的数组中的第一个对象?_Javascript_Arrays_Typescript - Fatal编程技术网

Javascript 如何使用TypeScript查找存在于另一个数组中的数组中的第一个对象?

Javascript 如何使用TypeScript查找存在于另一个数组中的数组中的第一个对象?,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有两个对象数组。我只想检查当我们在其他对象数组中获得第一个匹配时,它将返回数组中的第一个匹配对象。我只想返回第一个匹配,而不是所有匹配。第一个匹配后我无法断开贴图 例1:- var array1 = [{name:'Ram',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Amit',lastname:'kumar'}]; var array2 = [{name:'

我有两个对象数组。我只想检查当我们在其他对象数组中获得第一个匹配时,它将返回数组中的第一个匹配对象。我只想返回第一个匹配,而不是所有匹配。第一个匹配后我无法断开贴图

例1:-

var array1 = [{name:'Ram',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Amit',lastname:'kumar'}];
var array2 = [{name:'Anil',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Anjali',lastname:'kumari'}];
检查array2是否存在于array1中如果array2的对象在array1中找到,则它将只返回array2的第一个匹配项

输出:[{name:'Shyam',lastname:'kumar'}]

例2:-

var array1 = [{name:'Ram',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Amit',lastname:'kumar'}];
var array2 = [{name:'Anil',lastname:'kumar'},{name:'Arti',lastname:'kumari'},{name:'Mohan',lastname:'kumar'},{name:'Anjali',lastname:'kumari'}];
输出:[{name:'Mohan',lastname:'kumar'}]

//代码

  var a = [{name:'Ram',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Amit',lastname:'kumar'}];
    var b = [{name:'Anil',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Anjali',lastname:'kumari'}];
    var c = [];

    b.forEach(function(user) {
      var exists = false;
      for (let i=0; i<a.length && !exists; i++){
          exists = a[i].name === user.name ;
      }
       if(exists===true)
       {
       c.push(Object.assign({},user,{exists}));
       return;
       }
     
    });

    console.log(c);
var a=[{name:'Ram',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Amit',lastname:'kumar'}];
变量b=[{name:'Anil',lastname:'kumar'},{name:'Shyam',lastname:'kumar'},{name:'Mohan',lastname:'kumar'},{name:'Anjali',lastname:'kumari'}];
var c=[];
b、 forEach(函数(用户){
var=false;
对于(设i=0;隔离
解释
您不需要使用“classic”
let i=0
循环技术,因为您可以使用方法和

我们需要与条件匹配的
array2
的第一个元素,因此我们使用
array2.find()
,当任何元素为提供的回调返回
true
时,它就会停止


我们检查
array2
元素的条件是它们包含在
array1
中。如果这些是原始值,则可以使用。有关这些问题的更多解释,请参见以下问题的答案:

在处理对象时,我们不能依赖于两个对象之间的严格比较。当且仅当两个对象引用内存中的同一对象时,这将是正确的。但我们要确定一个对象是“相同的”如果其所有属性都具有相同的值。您可以使用类似的帮助器或查看此问题的答案:

这里我们只有两个属性,它们都是
string
,因此很容易定义我们自己的比较检查。如果:

o1.name === o2.name && o1.lastname === o2.lastname

我们想在
array2
find()
找到
array1
包含匹配项的第一个元素。我们使用
array1.some()
检查匹配项。如果
array1
中的任何元素与条件匹配,此函数将返回
true
。它将在找到任何
true
元素后立即停止

const res = array2.find((o2) =>
  array1.some((o1) => o1.name === o2.name && o1.lastname === o2.lastname)
);
通过内联定义所有回调,我们避免了任何类型脚本类型注释的需要。
o1
o2
的类型可以从
array1
array2
的类型中正确推断出来。您可以将其分解为若干部分,但需要写出函数参数的类型

解决方案 解释 您不需要使用“classic”
let i=0
循环技术,因为您可以使用方法和

我们需要与条件匹配的
array2
的第一个元素,因此我们使用
array2.find()
,当任何元素为提供的回调返回
true
时,它就会停止


我们检查
array2
元素的条件是它们包含在
array1
中。如果这些是原始值,则可以使用。有关这些问题的更多解释,请参见以下问题的答案:

在处理对象时,我们不能依赖于两个对象之间的严格比较。当且仅当两个对象引用内存中的同一对象时,这将是正确的。但我们要确定一个对象是“相同的”如果其所有属性都具有相同的值。您可以使用类似的帮助器或查看此问题的答案:

这里我们只有两个属性,它们都是
string
,因此很容易定义我们自己的比较检查。如果:

o1.name === o2.name && o1.lastname === o2.lastname

我们想在
array2
find()
找到
array1
包含匹配项的第一个元素。我们使用
array1.some()
检查匹配项。如果
array1
中的任何元素与条件匹配,此函数将返回
true
。它将在找到任何
true
元素后立即停止

const res = array2.find((o2) =>
  array1.some((o1) => o1.name === o2.name && o1.lastname === o2.lastname)
);
通过内联定义所有回调,我们避免了任何类型脚本类型注释的需要。
o1
o2
的类型可以从
array1
array2
的类型中正确推断出来。您可以将其分解为若干部分,但需要写出函数参数的类型

您就快到了:只需将输出限制为第一个匹配 花了一段时间才理解您的问题。如果我理解正确,您有两个数组,
a
包含对象,
b
包含可能与
a
中的对象匹配或不匹配的对象

您希望构造一个数组
c
,该数组只包含两个数组之间的第一个匹配对象

我不清楚“第一场比赛”是什么意思。例如:

从[p,q,r,s,r]和[m,n,p,s,r,s],第一个匹配可以是:

  • [r] 如果您的意思是“第一个数组中的第一个,然后停止”
  • [s] 如果您的意思是“第二个数组中的第一个,然后停止”
  • [r,s]如果您的意思是“对于第一个数组中的每个项目,第二个数组中的第一个匹配”
  • [s,r]如果你的意思是反之亦然
不幸的是,您的示例对于诊断您所指的4个选项中的哪一个没有帮助,因为只有一个匹配项

另一件不清楚的事情是,您是否只需要匹配
.name
属性(其中