僅當物件(變數)的所有屬性彼此不相等時,我才需要條件為真。如何以更優化的方式調節物件屬性的不等式?如果它們的數量增加obj[1]!=obj[2],等等的組合將大大增加
var obj = {
1: linksArray[randomNumber],
2: linksArray[randomNumber2],
3: linksArray[randomNumber3]
}
if(obj[1]!=obj[2] && obj[1]!=obj[3] &&
obj[2]!=obj[3] && obj[2]!=obj[1] &&
obj[3]!=obj[2] && obj[3]!=obj[1]
) {
arr.push(linksArray[randomNumber]);
arr.push(linksArray[randomNumber2]);
arr.push(linksArray[randomNumber3]);
break;
}
uj5u.com熱心網友回復:
獲取物件的值,并創建一個 Set。如果 Set 的大小與值的長度相同,則所有值都是唯一的:
const allUnique = obj => {
const values = Object.values(obj)
return new Set(values).size === values.length
}
const obj1 = { 1: 'a', '2': 'b', 3: 'c' }
const obj2 = { 1: 'a', '2': 'b', 3: 'c', 4: 'b' }
console.log(allUnique(obj1)) // true
console.log(allUnique(obj2)) // false
uj5u.com熱心網友回復:
將所有值放在一個 中array,然后使用它來構建一個Set(所有專案都不同的資料結構,檔案)。
如果陣列與集合具有相同數量的專案,則您確定它們都不同。
var obj1 = {
field1: true,
fiedl2: 2,
field3: "red",
}
var obj2 = {
field1: true,
fiedl2: 2,
field3: "red",
field4: 2
}
function allDifferent(obj) {
const values = Object.values(obj);
return new Set(values).size === values.length
}
console.log(allDifferent(obj1));
console.log(allDifferent(obj2));
uj5u.com熱心網友回復:
通過創建所有物件值的集合來檢查重復項 - 這些將是唯一的。然后將 Set 的大小與原始物件中的鍵/值數量進行比較。如果它們不同 - 原件中有重復。如果它們相同,則原始值是唯一的。
const uniqueValues = new Set(Object.keys(obj));
if (uniqueValues.size == obj.length) {...do stuff}
uj5u.com熱心網友回復:
看看這個人:https : //medium.com/@weberzt/finding-duplicate-integers-in-an-array-in-javascript-4fa9f0f3c45
非常有趣的解決方案。在這個解決方案中, a 型別是一個陣列。
function containsDuplicates(a) {
return (new Set(a)).size !== a.length;
}
復雜度是 O(n) 這還不錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335814.html
標籤:javascript 目的 if 语句
上一篇:將日期范圍內資料框某些列的值相乘,并基于R中另一列的值
下一篇:我怎樣才能簡化這個if陳述句?
