我有两个JSON数组,比如
array1=[{a:1,b:2,c:3,d:4}]
&
array2=[{a:2,b:5,c:3,d:4}]
是否有任何方法可以找到数组2中array1中其中一个键的值。在数组1中,键b包含值2,而array2也包含值为2的键a。如何捕获数组2的键名,对于数组中的一个键具有相同的值。
答案 0 :(得分:0)
我不太明白你是否有兴趣对数组或对象进行操作 - 因为你的例子是一对单个元素数组,并且数组中的对象之间的比较很明显。
那就是说,如果你的目标是比较两个对象,并返回两者相同的一组键,你会做类似的事情
obj1 = {a:1,b:2,c:3,d:4};
obj2 = {a:2,b:5,c:3,d:4};
function sameKeys(a,b) {
return Object.keys(a).filter(function(key) {
return a[key] === b[key];
});
}
console.log(sameKeys(obj1, obj2));
当我跑步时,我得到:
[ 'c', 'd' ]
我希望这就是你所要求的......
答案 1 :(得分:0)
写了一个原型函数来比较一个对象与另一个对象。
var obj1 = {a: 1, b: 2, c: 3, d: 4};
var obj2 = {a: 2, b: 4, c: 100, d: 200}
Object.prototype.propertiesOf = function(visitorObj) {
result = {};
//Go through the host object
for (thisKey in this) {
//Exclude this function
if (!this.hasOwnProperty(thisKey))
continue;
//Compare the visitor object against the current property
for (visitorKey in visitorObj) {
if (visitorObj[visitorKey] === this[thisKey])
result[visitorKey] = thisKey;
}
}
return result;
}
console.log(obj1.propertiesOf(obj2));
通过传递另一个对象作为参数,简单地调用任何对象的propertiesOf
函数。它返回一个具有相似键的对象。
以上示例将导致:
{a: "b", b: "d"}
答案 2 :(得分:0)
看起来你想要这样的东西:创建一个函数,找到第二个对象中具有给定值的所有键。然后将第一个对象的值传递给该函数。
obj1={a:1,b:2,c:3,d:4};
obj2={a:2,b:5,c:3,d:4};
function findKeysByValue(obj, v) {
var results = [];
for (var k in obj) {
if (obj.hasOwnProperty(k) && v == obj[k]) {
results.push(k);
}
}
return results;
}
console.log(findKeysByValue(obj2, obj1['b'])); // ['a']