Array1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" };
Array2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" };
在上述給定的2個陣列我有在性質名稱和職業不同的值,但位置的具有相同的值作爲數組1的不同屬性,比較兩個陣列對象,並獲得只陣列
我想比較兩個數組,並只獲得Array1的不同屬性(名稱和職業)
Array1 = { "Name": "Max", "Occupation": "Agri", "Location": "KGP" };
Array2 = { "Name": "Alex", "Occupation": "S.E", "Location": "KGP" };
在上述給定的2個陣列我有在性質名稱和職業不同的值,但位置的具有相同的值作爲數組1的不同屬性,比較兩個陣列對象,並獲得只陣列
我想比較兩個數組,並只獲得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);
你的數組1和數組2是JavaScript Object。有了2個對象,你可以執行這個工作,但髒比較。只要你有更多的財產......這將是一個爛攤子。在JavaScript
var result = {};
if (Array1.Name !== Array2.Name)
result.Name = Array1.Name;
if (Array1.Occupation !== Array2.Occupation)
result.Occupation = Array1.Occupation.
return result;
數組聲明的語法如下:
var Array1 = [];
如果你想對象的數組,你可以這樣寫:
var Array1 = [ { "Name": "Max", "Occupation": "Agri", "Location": "KGP" }, { b"Name": "Max", "Occupation": "Agri", "Location": "KGP"} ]
但我懷疑這是你的意圖那裏。
是的這是我的意圖 – Andy
隨時糾正自己,但請注意,Nina Scholz和Vladu Ionut的答案更具適應性:他們可以使用您擁有的任何屬性,而不僅僅是使用「名稱」和「佔領」。我會建議你採取他們的代碼之一。 –
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));
如果目標是讓不匹配的密鑰,你可以嘗試這樣的事:
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));
我會假設數組1和數組2的意思是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>
你能分享你試過嗎? – Rajesh
「名稱」和「職業」是屬性。您正在尋找這些屬性的不同值。 –
我只看到物體。 –