Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 如何检查一个对象是否部分包含另一个对象?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 如何检查一个对象是否部分包含另一个对象?

Javascript 如何检查一个对象是否部分包含另一个对象?,javascript,ecmascript-6,Javascript,Ecmascript 6,因此,我试图检查一个对象是否正好包含另一个/部分对象。例如,我想检查{a:1,b:2,c:2}是否包含{a:1,b:2}。但必须按照这个顺序。如果a是第一个元素并对齐,则b元素必须在后面完全对齐。另外,我可以检查它们的值吗顺序很重要 //Here is my code currently: function whatIsInAName(collection, source) { var array = []; var sourceNames = Object.getOwnProp

因此,我试图检查一个对象是否正好包含另一个/部分对象。例如,我想检查
{a:1,b:2,c:2}
是否包含
{a:1,b:2}
。但必须按照这个顺序。如果
a
是第一个元素并对齐,则
b
元素必须在后面完全对齐。另外,我可以检查它们的值吗顺序很重要

//Here is my code currently:
function whatIsInAName(collection, source) {
    var array = [];
    var sourceNames = Object.getOwnPropertyNames(source);
  for (var i = 0; i < collection.length; i++) {
         var collectionNames = Object.getOwnPropertyNames(collection[i])
        JSON.stringify(collectionNames).includes(JSON.stringify(sourceNames)) ?  array.push(collection[i]) : null
      }
      return array
}

whatIsInAName([{ a: 1, b: 2 }, { a: 1 }, { a: 1, b: 2, c: 2 }], { a: 1, b: 2 });
//这是我当前的代码:
函数whatisiname(集合,源){
var数组=[];
var sourceNames=Object.getOwnPropertyNames(源);
对于(变量i=0;i
这是一张精确的支票,但只限于姓名。我希望它也能比较这些值

它也不是在另一个数据库中部分检查对象。类似于将
{a:1,b:2,c:2}
打包为包含
{a:1,b:2}


这是给我的挑战-->

您可以获取单个对象的键来比较值,并使用
every
返回结果以过滤对象数组

  • 要获取阵列的一部分

  • 用于获取具有对象自身键的数组

  • 数组#every`]),用于检查所有键和值

  • 用于检查对象中是否存在密钥

  • 用于检查操作数的类型和值

函数比较(数组、对象){
返回数组.filter(函数(o){
return Object.keys(Object.every)函数(k){
返回o中的k&对象[k]==o[k];
});
});
}
log(比较([{a:1,b:2},{a:1},{a:1,b:2,c:2}],{a:1,b:2}))

.as console wrapper{max height:100%!important;top:0;}
我试图在评论中引导您自己解决问题,但如果您只是在寻找解决方案,下面介绍如何使用基本JavaScript构造(与
Array#filter
Array#every
不同)

它可能比其他一些解决方案长得多,但它利用了JavaScript的基础知识:

函数whatisiname(集合,源){
var数组=[];
var sourceNames=Object.getOwnPropertyNames(源);
//循环集合中的每个项
对于(变量i=0;i控制台日志(结果)javascript对象中没有顺序的保证这些不是数组,也没有顺序,因此无法比较它们的顺序(这是charlie的观点)。这些不是数组。那些是物体。如前所述,他们没有订单。您可以尝试类似于
[{a:1}、{b:2}、
..
]
映射的方法。但是您的演示有一组对象。不清楚预期结果是什么,请将所有相关代码放入问题本身。演示很好,但只应用于支持自包含的应用程序中存在的内容question@Leed您已经修复了不正确的术语,但是您的问题仍然是荒谬的,因为(正如两个人指出的)对象没有顺序。Re:“是的,就是那个链接”,freginold要求的是你把代码放在你的问题中。谢谢,这确实有效。这段代码是如何工作的?