內部檢查值的有效辦法,我有一個JSON對象,例如AngularJS - 一個JSON元素
var obj = { a: "sample", b: "sample", c: "sample" };
,我要檢查每一個關鍵,如果他們有相同的價值觀。
if(a === b || b === c || c === a){
console.log("Error");
}
有沒有更好的方法來檢查這些值?任何想法都會有所幫助。謝謝!
內部檢查值的有效辦法,我有一個JSON對象,例如AngularJS - 一個JSON元素
var obj = { a: "sample", b: "sample", c: "sample" };
,我要檢查每一個關鍵,如果他們有相同的價值觀。
if(a === b || b === c || c === a){
console.log("Error");
}
有沒有更好的方法來檢查這些值?任何想法都會有所幫助。謝謝!
您可以使用Object.keys和array.every後面所有的元素檢查的「目標文件」的第一個元素的值,並將所有值與第一個:
var obj = { a: "sample", b: "sample", c: "sample" };
var keys = Object.keys(obj);
var first = obj[keys[0]]
var sameValue = keys.every(key => obj[key] === first);
console.log(sameValue);
編輯:
如果你想如果至少兩個屬性具有相同的值返回true:
var obj = { a: "sample", b: "saxmple", c: "sample" };
var keys = Object.keys(obj);
var sameValue = keys.some((key, index) => keys.some((otherKey, otherIndex) => obj[key] === obj[otherKey] && index !== otherIndex));
console.log(sameValue);
您發佈的代碼將永遠不會打印Error
。
您正在引用不存在的值。
修復此有:
if(obj.a === obj.b || obj.b === obj.c || obj.c === obj.a){
console.log("Error");
}
你也可以用做:
var firstObj = '';
var i = 0;
var areDifferent = false;
for var prop in obj {
if (i == 0){
firstObj = obj[property]
}
if (firstObj != obj[property]){
areDifferent = true;
}
i++;
}
if (areDifferent){
//your code here
}
上面的代碼將通過所有obj
性能運行,檢查是否所有的人都是平等的,以第一一個 - 這意味着,它們是平等的。
從Underscore.js試試這個_.every
every_.every(列表,[謂語],[背景])
返回true如果列表中的所有值傳遞的謂詞真相測驗。如果發現錯誤元素,則短路並停止遍歷列表。
_.every([2,4,5],function(num){return num%2 == 0;}); =>假
在烏拉圭回合的情況下ü應在「目標文件」
稍後會嘗試這個答案,我會給你一個反饋。謝謝你回答我的問題。祝你有美好的一天! –
我在代碼中發現的問題是,如果鍵a和鍵b中的值相同,則會輸出false。如果在兩個或更多個鍵中具有相同的值,是否可以返回true? –
我編輯了答案 – Faly