【发布时间】:2015-06-12 06:43:37
【问题描述】:
编辑:已解决请参阅下面的最终解决方案
编辑:值名称不一样
对象 1
var obj1 = {
val1a : 4,
val2a : 3 ,
val3a : 7
}
带有数组的对象 2
var obj2 = {
val1b : [one, two, three],
val2b : [oneA, twoA, threeA],
val3b : [oneB]
}
我正在尝试做的是以下
if(obj1.val1a === obj2.val1b.length){
// code
}
但我不希望它如此具体。有没有办法遍历每个对象并返回与 obj1 不匹配的 obj2 的值
下划线解决方案
function checkData(obj1, obj2) {
result = []
var keys_obj1 = Object.keys( obj1)
var keys_obj2 = Object.keys( obj2)
_.each(keys_obj1, function(num, i){
if(obj1[keys_obj1[i]].length !== obj2[keys_obj2[i]]) {
result.push(keys_obj1[i]);
}
})
return result;
}
【问题讨论】:
-
每个对象中的键是否按名称相关?如果有怎么办?还是你只是想按顺序比较?
-
您是如何构建数据的?
-
他们永远不一样?有什么模式吗?第一个 obj 总是 val[i]a,第二个 obj 总是 val[i]b?
-
不,它们总是不同的,如果它们相同,那么答案将很容易,因为您可以匹配名称
-
它们是否总是具有 val[num][letter] 模式,或者对象是否具有键
orange、moose、gopher,例如?
标签: javascript