比较两个对象数组,只得到数组的不同属性
Compare two array of objects and get only the different Property of the array
Array1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" };
Array2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" };
在上面给定的两个数组中,i的属性Name和Occupation的值不同,但location的值与Array1的值相同,
我想比较两个数组,只得到不同的属性(名称和职业)的Array1
您可以遍历object1
的键并检查与object2
的属性的差异。如果不相等,则赋值给结果object3
的属性。
var object1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" },
object2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" },
object3 = {};
Object.keys(object1).forEach(function (k) {
if (object1[k] !== object2[k]) {
object3[k] = object1[k];
}
});
console.log(object3);
var obj1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" };
var obj2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" };
function getDifference(obj1,obj2){
var diff = [];
Object.keys(obj1).forEach(function(key){
if (obj1[key] !== obj2[key]) diff.push(key);
});
return diff;
}
console.log(getDifference(obj1,obj2));
你的Array1和Array2是JavaScript对象。对于2个对象,您可以执行这种工作,但肮脏的比较。一旦你有了更多的财产……这会很乱的。
var result = {};
if (Array1.Name !== Array2.Name)
result.Name = Array1.Name;
if (Array1.Occupation !== Array2.Occupation)
result.Occupation = Array1.Occupation.
return result;
JavaScript中的数组用以下语法声明:
var Array1 = [];
如果你想要一个对象数组,你可以这样写:
var Array1 = [ { "Name": "Max", "Occupation": "Agri", "Location": "KGP" }, { b"Name": "Max", "Occupation": "Agri", "Location": "KGP"} ]
但我怀疑这是你的意图。
如果目标是获得不匹配的键,您可以尝试这样做:
function getMismatchKeys(o1,o2){
return Object.keys(o1).filter(function(k){
return o1.hasOwnProperty(k) && o2.hasOwnProperty(k) && o1[k] !== o2[k]
});
}
var obj1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" };
var obj2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" };
console.log(getMismatchKeys(obj1, obj2));
我将假设Array1和Array2是json对象,而不是json数组。我还假设您想要一个结果对象,该对象仅由Array1与Array2不同的键值对组成。基于这些假设,您可以使用lodash omitBy来解决您的问题。
var Array1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" };
var Array2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" };
var result = _.omitBy(Array1, function(val, key){ return val === Array2[key];});
console.log('the key value pairs of Array1 that are different from Array2 are: ', result);
<script src="https://cdn.jsdelivr.net/lodash/4.16.1/lodash.min.js"></script>
相关文章:
- 如何筛选对象的数组属性
- 如何在mongodb(mongose)中覆盖子文档的数组属性
- 如何按对象数组中的数组属性进行筛选
- 基于其他属性查询多维数组属性
- 循环访问 JS 数组 + 数组属性
- AngularJS:观察数组属性
- JSON对象中的数组属性通过foreach更新-更新所有键
- Javascript - 使用数组属性定义对象
- Ember.js with EmberFire Object - 如何使用数组属性
- 我无法访问由开发人员工具中可见的回调填充的 javascript 对象数组属性内容
- 设置对象数据结构数组属性
- 按子数组属性/值对 JavaScript 对象数组进行排序
- 对象的数组属性
- 如何访问 JavaScript 对象上的数组属性
- 使用 jQuery 深层复制对象数组属性值
- 访问并迭代模板内Kendo UI Listview的数组属性
- 主干模型数组属性更改和更改事件侦听器不总是启动
- 在json数组属性中循环
- 通过js中的数组属性方法进行迭代
- 无法清除主干模型数组属性