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要求的是你把代码放在你的问题中。谢谢,这确实有效。这段代码是如何工作的?