如何檢查我的數組是否只包含一個不同的元素? `如何檢查數組是否只包含一個不同的元素?
var arr = [1, 1, 1];
var arr2 = [1, 2, 3];
checkIfThereIsOnlyOneElement(arr); //should return true
checkIfThereIsOnlyOneElement(arr2) //should return false;`
如何檢查我的數組是否只包含一個不同的元素? `如何檢查數組是否只包含一個不同的元素?
var arr = [1, 1, 1];
var arr2 = [1, 2, 3];
checkIfThereIsOnlyOneElement(arr); //should return true
checkIfThereIsOnlyOneElement(arr2) //should return false;`
您可以實現這樣說:
var arr = [1, 1, 1];
var arr2 = [1, 2, 3];
console.log(checkIfThereIsOnlyOneElement(arr));
console.log(checkIfThereIsOnlyOneElement(arr2));
function checkIfThereIsOnlyOneElement(arr) {
arr.sort();
return arr[0] == arr[arr.length -1]
}
非常好。對數組進行排序,然後檢查第一個和最後一個項目是否相同。其他答案使事情變得複雜。 – castis
這個工作完美!謝謝! – stephenpassero
@castis如果數組長度爲一千個元素,該怎麼辦?我只是猜測排序功能將是一個矯枉過正的問題。 'Set'方法似乎更好,imo。 –
試試這個簡單的實現
function checkIfThereIsOnlyOneElement(arr)
{
var map = {};//create a map
for(var counter = 0; counter < arr.length; counter++)
{
map[ arr[ counter ] ] = true;
if (Object.keys (map).length > 1) //check if this map has only one key
{
return false;
}
}
return true;
}
@Kinduser它正在檢查數組中是否只有一個唯一元素。 – gurvinder372
@Kinduser沒有得到你。 「它正在引爆門。」 – gurvinder372
@Kinduser我知道,我的意思是問 - 我以什麼方式這樣做。 – gurvinder372
使用Set對象:
var arr = [1, 1, 1],
arr2 = [1, 2, 3],
checkForOne = function(arr){
return (new Set(arr)).size === 1;
}
console.log(checkForOne(arr));
console.log(checkForOne(arr2));
'Array.length'不夠用?有什麼問題使問題複雜化? –
@Kinduser:*如何*'Array.length'就夠了? – David
@Kinduser,這個問題在我看來似乎是「一個獨特的元素」。這就是爲什麼OP要''真''爲'[1,1,1]' – RomanPerekhrest
簡單地檢查是否所有元素包含相同的值,一個方法是使用 「lodash」 模塊的 「uniq的」 功能:
checkIfThereIsOnlyOneElement(arr){
return _.uniq(arr).length == 1;
}
您可以檢查獨特價值在陣列中。在此基礎上來看,我們可以實現你的函數:
var arr = [1, 1, 1];
var arr2 = [1, 2, 3];
function checkIfThereIsOnlyOneElement(arr) {
return arr.filter(function (item, i, ar) {
return ar.indexOf(item) === i;
}).length === 1;
}
console.log(checkIfThereIsOnlyOneElement(arr));
console.log(checkIfThereIsOnlyOneElement(arr2));
有很多很容易的實現這個功能的。讓我給你們兩個,一個是功能一行,另一個是迭代(可能是更好的表演)片段。
順便說一句,你的命名非常糟糕的,它應該被稱爲:isArrayOfTheSameElements
// Iterative:
function isArrayOfTheSameElements(arr){
var firstElement = arr[0];
for(var i=1; i < arr.length; i++){
if (arr[i]!==firstElement) {
return false;
}
}
return true;
}
// Functional:
function isArrayOfTheSameElements(arr){
return Object.keys(arr.reduce(function(current, next){
return current[next] = next && current;
}, {})).length <= 1;
}
你可以使用Array#every
和檢查僅agsindt的firsr元素。
function checkDistinct(array) {
return array.every(function (a, _, aa) { return a === aa[0]; });
}
var arr = [1, 1, 1],
arr2 = [1, 2, 3];
console.log(checkDistinct(arr)); // true
console.log(checkDistinct(arr2)); // false
你總是可以適當地做這樣.every()
由@Nina Scholz,但你也可以做喜歡的各種指出;
var all = a => a.length-1 ? a[0] === a[1] && all(a.slice(1)) : true;
console.log(all([1,1,1,1]));
console.log(all([1,1,1,2]));
它削減迭代一旦滿足false
值相同的利益。
一個元素意味着..相同的參數? – prasanth
使用'Array.length'? – Saravana
[PHP array:count or sizeof?]可能的重複(http://stackoverflow.com/questions/3974385/php-array-count-or-sizeof) – 2017-04-12 12:46:22