অ্যারের সমস্ত মান সমান কিনা তা পরীক্ষা করে দেখুন


188

আমার অ্যারেগুলি সন্ধান করতে হবে যেখানে সমস্ত মান সমান। এটি করার দ্রুততম কোনটি? আমি কি এটির মধ্য দিয়ে লুপ করব এবং কেবল মানগুলির তুলনা করব?

['a', 'a', 'a', 'a'] // true
['a', 'a', 'b', 'a'] // false

1
@ টিজে ক্রাউডার আমি বাজি ধরছি আপনি ইতিমধ্যে সর্বোত্তম সমাধান সম্পর্কে চিন্তাভাবনা করছেন;)
ভিজিওএন

2
@ টিজে ক্রাউডার: প্রকৃতপক্ষে উত্তরগুলি গ্রহণের জন্য প্রশ্নকারীদের আগ্রহের কথা উল্লেখ করা উচিত নয়। 1 জন প্রতিনিধি ব্যবহারকারীরা প্রায়শই জিজ্ঞাসা এবং প্রকারগুলি চালিত বলে মনে হয় যা ইদানীং একটি অনুলিপি-পেস্ট-সক্ষম উত্তর পাওয়ার সাথে সাথে চলে যায়।
সার্বারবাস

1
এই পদ্ধতির কাছাকাছি কিছু কাজ করা উচিত? a.join(',').split(a[0]).length === a.length + 1
যশবন্ত

1
@ টম্যাজাটো: "ওপি" এর অর্থ "আসল পোস্টার" (প্রশ্নটি জিজ্ঞাসা করা ব্যক্তি)।
টিজে ক্রাউডার

উত্তর:


286
const allEqual = arr => arr.every( v => v === arr[0] )
allEqual( [1,1,1,1] )  // true

বা এক-লাইনার:

[1,1,1,1].every( (val, i, arr) => val === arr[0] )   // true

অ্যারে.প্রোটোটাইপ.এভারি (এমডিএন থেকে): every()পদ্ধতিটি পরীক্ষা করে যে অ্যারের সমস্ত উপাদান প্রদত্ত ফাংশন দ্বারা প্রয়োগকৃত পরীক্ষায় পাস করে কিনা।


10
ব্রেভিটি বুদ্ধিমানের আত্মা
স্বরোগ

1
আমি একটি জেএসপিফার কেস তৈরি করেছি । এই পদ্ধতিটি বেশিরভাগ প্রার্থীকে ছাড়িয়ে যায়।
জুনিয়ানং হুয়াং

1
const everythings_equal = array => array.every(thing => thing === array[0]);
24

8
ব্যবহার করুন someপরিবর্তে every: arr.some( v => v !== arr[0] )। এটি অসম হিসাবে পাওয়া প্রথম উপাদানটির প্রথম দিকে ফিরে আসবে arr[0]
জানুয়ারী

2
@ জান everyতাড়াতাড়ি ফিরবেন।
গোলপট

111

সম্পাদনা: একটি লাল নিনজা হতে:

!!array.reduce(function(a, b){ return (a === b) ? a : NaN; });

ফলাফল:

var array = ["a", "a", "a"] => result: "true"
var array = ["a", "b", "a"] => result: "false"
var array = ["false", ""] => result: "false"
var array = ["false", false] => result: "false"
var array = ["false", "false"] => result: "true"
var array = [NaN, NaN] => result: "false" 

সতর্কতা:

var array = [] => result: TypeError thrown

এটি কারণ আমরা একটি প্রাথমিক মূল্য পাস করি না । সুতরাং, আপনি array.lengthপ্রথমে চেক করতে ইচ্ছুক হতে পারে ।


5
পার্টিতে কিছুটা দেরি হতে পারে ... আমি মনে করি আপনার অ্যারে falseগুলি তৈরি করা থাকলে এটি কাজ করে না ! উদাহরণস্বরূপ চেষ্টা করুন [ভুয়া, মিথ্যা, মিথ্যা] .ড্রেস (ফাংশন (ক, খ) {রিটার্ন (a === খ)? এ: মিথ্যা;});
জর্জ ফ্লোরেন্টজস

3
@ মার্টিন: ["false", ""]ফেরত true: /
ডালগার্ড

6
এটি ব্যবহার করে একটি খাঁজ নিতে পারে NaN। যেহেতু উভয়ই মিথ্যা NaN === NaNএবং NaN !== NaNএটি গ্যারান্টি দেয় যে একবার prevএনএএন সেট করা থাকলে কোনও মান এটিকে বের করতে পারে না। দ্বিগুণ অস্বীকৃতি যোগ করার ফলে ফলগুলি রূপান্তরিত হয় trueএবং falseযেহেতু NaNমিথ্যা। চূড়ান্ত ফর্ম:!!array.reduce(function(a, b){ return (a === b) ? a : NaN; });
ফিলিপ সিলভা

3
DOWNVOTED । যদি উপাদানগুলি সমান তবে মিথ্যা হয় ?
25:58

3
আমি হ্রাস পেয়েছি কারণ এটি বুুলিয়ান মানগুলির সাথে কাজ করে না।
টাইগুই 7

62

এইটা কাজ করে. প্রোটোটাইপ ব্যবহার করে আপনি অ্যারেতে একটি পদ্ধতি তৈরি করেন।

if (Array.prototype.allValuesSame === undefined) {
  Array.prototype.allValuesSame = function() {
    for (let i = 1; i < this.length; i++) {
      if (this[i] !== this[0]) {
        return false;
      }
    }
    return true;
  }
}

এটিকে কল করুন:

let a = ['a', 'a', 'a'];
let b = a.allValuesSame(); // true
a = ['a', 'b', 'a'];
b = a.allValuesSame();     // false

5
খুব সুন্দর, তবে সাবধান: আইটি প্রোটোটাইপগুলি নির্ধারণের এই পদ্ধতিটিকে সমর্থন করে না। আমি যাই হোক না কেন এটি ব্যবহার।
টোমা জ্যাটো - মনিকা

5
@ টম্যাজাটো: আইই Array.prototypeঠিক জরিমানা (এমনকি আই 6 )) বৃদ্ধি করার পক্ষে সমর্থন করে । এটি কেবলমাত্র ডোম উপাদান প্রোটোটাইপ যা IE এর কিছু পুরানো সংস্করণ বৃদ্ধিতে সমর্থন করে না।
টিজে ক্রাউডার

4
আমি মনে করি না বান্টের প্যাচিং অন্তর্নির্মিত প্রোটোটাইপ হওয়া ভাল ধারণা। যদি একাধিক গ্রন্থাগার এটি করে থাকে তবে এটি অপ্রত্যাশিত আচরণের দিকে পরিচালিত করতে পারে যা ডিবাগ করা খুব কঠিন।
মার্ক উইলবার

1
@MarkWilbur +1 টি, বিশেষ করে যদি আপনি পরবর্তী অ্যারে একটি for..in লুপ না, আপনি পাবেন allValuesSameলুপ
অলিভিয়ের Pons

1
অভিপ্রায়টি পরিবর্তন না করে আমি এগিয়ে গিয়ে এটিকে আধুনিকায়ন করেছি।
মিঃ পলিহর্ল

30

জাভাস্ক্রিপ্ট ১.6 এ আপনি ব্যবহার করতে পারেন Array.every:

function AllTheSame(array) {
    var first = array[0];
    return array.every(function(element) {
        return element === first;
    });
}

আপনার সম্ভবত কিছু স্যানিটি চেক প্রয়োজন, উদাহরণস্বরূপ যখন অ্যারের কোনও উপাদান নেই। (এছাড়াও, সমস্ত উপাদানগুলি যখন NaNথেকে রয়েছে তখন এটি কাজ করবে না NaN !== NaN, তবে এটি কোনও সমস্যা হওয়া উচিত নয় ... তাই না?)


30

আপনি অ্যারেটিকে একটি সেটে পরিণত করতে পারেন। যদি সেটের আকার 1 এর সমান হয় তবে অ্যারের সমস্ত উপাদান সমান।

function allEqual(arr) {
  return new Set(arr).size == 1;
}

allEqual(['a', 'a', 'a', 'a']); // true
allEqual(['a', 'a', 'b', 'a']); // false

উজ্জ্বল। এই ক্ষেত্রে যে allEqual([NaN, NaN])দেয় ঠিক তা নোট করুন true
Константин Ван

12

এবং পারফরম্যান্স তুলনার জন্য আমি একটি মানদণ্ডও করেছি:

function allAreEqual(array){
    if(!array.length) return true;
    // I also made sure it works with [false, false] array
    return array.reduce(function(a, b){return (a === b)?a:(!b);}) === array[0];
}
function same(a) {
    if (!a.length) return true;
    return !a.filter(function (e) {
        return e !== a[0];
    }).length;
}

function allTheSame(array) {
    var first = array[0];
    return array.every(function(element) {
        return element === first;
    });
}

function useSome(array){
    return !array.some(function(value, index, array){
        return value !== array[0];
    });
}

ফলাফল:

allAreEqual x 47,565 ops/sec ±0.16% (100 runs sampled)
same x 42,529 ops/sec ±1.74% (92 runs sampled)
allTheSame x 66,437 ops/sec ±0.45% (102 runs sampled)
useSome x 70,102 ops/sec ±0.27% (100 runs sampled)

সুতরাং স্পষ্টতই বিল্টিন অ্যারে ব্যবহার করুন ome


3
এখানে আরও পারফরম্যান্স কী তা যাচাই করার জন্য ভাল ধারণা। Array#someকখনও কখনও ছাড়িয়ে যাওয়ার কারণ হ'ল একবার কলব্যাক ফাংশনটি সত্য হয়ে গেলে এটি পুনরাবৃত্তি বন্ধ করে দেয়। সুতরাং, যদি সমস্ত উপাদান প্রকৃতপক্ষে সমান হয় তবে পারফরম্যান্সটি একইরকম হওয়া উচিত Array#every। এবং সমস্ত উপাদান সমান না হলে আপেক্ষিক কার্য সম্পাদন প্রথম অ-মিলের উপাদানগুলির সূচির ভিত্তিতে পরিবর্তিত হয়।
ড্যানম্যাক্টো

3
সুন্দর. আপনি লোলটি ফাংশনটির সাথে প্রত্যেকটির নাম রাখতে পারতেন। উদাহরণস্বরূপ: হ্রাস করুন, ফিল্টার করুন, প্রত্যেকেই
জেড খোলা

লুপের জন্য স্থানীয় যেখানে, আমি বাজি
ধরছি যে

9

আন্ডারস্কোর / লোডাশ ব্যবহার করে সংক্ষিপ্ত উত্তর

function elementsEqual(arr) {
    return !_.without(arr, arr[0]).length
}

বৈশিষ্ট:

elementsEqual(null) // throws error
elementsEqual([]) // true
elementsEqual({}) // true
elementsEqual([1]) // true
elementsEqual([1,2]) // false
elementsEqual(NaN) // true

সম্পাদনা:

বা আরও ছোট, টমের উত্তর দ্বারা অনুপ্রাণিত:

function elementsEqual2(arr) {
    return _.uniq(arr).length <= 1;
}

বৈশিষ্ট:

elementsEqual2(null) // true (beware, it's different than above)
elementsEqual2([]) // true
elementsEqual2({}) // true
elementsEqual2([1]) // true
elementsEqual2([1,2]) // false
elementsEqual2(NaN) // true

6

যদি আপনি ইতিমধ্যে আন্ডারস্কোর.জেএস ব্যবহার করছেন , তবে এখানে আরও একটি বিকল্প ব্যবহার করা হচ্ছে _.uniq:

function allEqual(arr) {
    return _.uniq(arr).length === 1;
}

_.uniqঅ্যারের সদৃশ সংস্করণ প্রদান করে। সমস্ত মান যদি একই হয় তবে দৈর্ঘ্য 1 হবে।

মন্তব্যে যেমন উল্লেখ করা হয়েছে, প্রদত্ত যে আপনি খালি অ্যারে প্রত্যাশা করতে পারেন true, তারপরে আপনার সেই ক্ষেত্রেও পরীক্ষা করা উচিত:

function allEqual(arr) {
    return arr.length === 0 || _.uniq(arr).length === 1;
}

তবে অ্যারে খালি থাকলে, আপনার উত্তর ফিরে আসবে false। যদিও আমি মনে করি এটি হওয়া উচিত true। পরিবর্তন করা .length <= 1যদিও যথেষ্ট হবে।
গড় জো

@ কাস্তান এটি একটি ন্যায্য বিষয়। আমি আমার জবাবটি আপডেট করেছি cover
টম ফেঞ্চ

6

হ্যাঁ, আপনি এটি নীচের মতো ফিল্টার ব্যবহার করেও পরীক্ষা করে দেখতে পারেন, খুব সাধারণ, প্রতিটি মান প্রথমবারের মতো একই পরীক্ষা করা:

//ES6
function sameValues(arr) {
  return arr.filter((v,i,a)=>v===a[0]).length === arr.length;
} 

অ্যারেতে প্রতিটি পদ্ধতি ব্যবহার করেও করা যেতে পারে:

//ES6
function sameValues(arr) {
  return arr.every((v,i,a)=>v===a[0]);
} 

এবং আপনি নীচের মত আপনার অ্যারে পরীক্ষা করতে পারেন:

sameValues(['a', 'a', 'a', 'a']); // true
sameValues(['a', 'a', 'b', 'a']); // false

অথবা আপনি এটিকে জাভাস্ক্রিপ্টে নেটিভ অ্যারে ক্রিয়াকলাপগুলিতে যুক্ত করতে পারেন যদি আপনি এটিকে অনেক বেশি পুনরায় ব্যবহার করেন:

//ES6
Array.prototype.sameValues = Array.prototype.sameValues || function(){
 this.every((v,i,a)=>v===a[0]);
}

এবং আপনি নীচের মত আপনার অ্যারে পরীক্ষা করতে পারেন:

['a', 'a', 'a', 'a'].sameValues(); // true
['a', 'a', 'b', 'a'].sameValues(); // false

5

Array.everyসমর্থিত হলে আপনি ব্যবহার করতে পারেন :

var equals = array.every(function(value, index, array){
    return value === array[0];
});

একটি লুপ বিকল্প পদ্ধতির কিছু হতে পারে sort

var temp = array.slice(0).sort();
var equals = temp[0] === temp[temp.length - 1];

অথবা, আইটেমগুলি যদি প্রশ্নের মতো হয় তবে কিছু নোংরা:

var equals = array.join('').split(array[0]).join('').length === 0;

এছাড়াও কাজ করে।


পিছনের দিকে আপনার প্রথম উদাহরণ রয়েছে। হওয়া উচিত equals = !array.some( (v,i,a) => v!==a[0] )। অন্যথায় আপনি কেবল যাচাই করছেন যে কোনও মান প্রথম সমান যা অবশ্যই অবশ্যই সর্বদা সত্য হবে :)
মার্ক কাহন

ঠিক নয়, আমি প্রথম অনুচ্ছেদে উল্লিখিত হিসাবে someপরিবর্তে ব্যবহার everyকরেছি। :) ধরার জন্য ধন্যবাদ!
ZER0

5

আপনি অ্যারে.প্রোটোটাইপ.ইভারি , অবজেক্ট.ইস এবং ইএস 6 তীর ফাংশন ব্যবহার করে যা করতে চান তা করতে এই ওয়ান-লাইনার পেতে পারেন :

const all = arr => arr.every(x => Object.is(arr[0], x));

2
দয়া করে আপনি যে প্রস্তাবটি দিচ্ছেন তার সমাধান করুন।
il_raffa

3

আমি মনে করি এটি করার সহজ উপায় হ'ল প্রতিটি মানকে পরেরটির সাথে তুলনা করার জন্য একটি লুপ তৈরি করা। যতক্ষণ না "শৃঙ্খলে" বিরতি থাকে ততক্ষণ এটি মিথ্যা হয়ে ফিরে আসত। প্রথমটি যদি দ্বিতীয়টির সমান হয়, দ্বিতীয় তৃতীয়ের সমান হয় এবং এরকম হয়, তবে আমরা সিদ্ধান্তে পৌঁছাতে পারি যে অ্যারের সমস্ত উপাদান একে অপরের সমান।

একটি অ্যারে ডেটা দেওয়া হয়েছে [], তারপরে আপনি ব্যবহার করতে পারেন:

for(x=0;x<data.length - 1;x++){
    if (data[x] != data[x+1]){
        isEqual = false;            
    }
}
alert("All elements are equal is " + isEqual);


3

নতুন সমাধান আপডেট করুন: চেক সূচি

 let a = ['a', 'a', 'b', 'a'];
 let a = ['a', 'a', 'a', 'a'];
 let check = (list) => list.every(item => list.indexOf(item) === 0);
 check(a); // false;
 check(b); // true;

ES6 এর সাথে আপডেট হয়েছে: ব্যবহারটি list.everyদ্রুততম উপায়:

 let a = ['a', 'a', 'b', 'a'];
 let check = (list) => list.every(item => item === list[0]);

পুরাতন রুপ:

      var listTrue = ['a', 'a', 'a', 'a'];
      var listFalse = ['a', 'a', 'a', 'ab'];

      function areWeTheSame(list) { 
         var sample = list[0];
         return (list.every((item) => item === sample));
      }

2

আপনি এটি ব্যবহার করতে পারেন:

function same(a) {
    if (!a.length) return true;
    return !a.filter(function (e) {
        return e !== a[0];
    }).length;
}

ফাংশনটি প্রথমে অ্যারেটি খালি কিনা তা যাচাই করে। যদি এটির মান হয় তবে এটি সমান .. অন্যথায় এটি অ্যারে ফিল্টার করে এবং প্রথম উপাদান থেকে পৃথক সমস্ত উপাদান গ্রহণ করে different যদি এরকম কোনও মান থাকে না => অ্যারেতে কেবল সমান উপাদান থাকে অন্যথায় এটি হয় না।


1

অ্যান্ডস্কোরের _.isEqual(object, other)কাজটি অ্যারেগুলির জন্য ভাল কাজ করছে বলে মনে হচ্ছে। অ্যারেতে আইটেমগুলির ক্রম যখন এটি সাম্যের জন্য পরীক্ষা করে। দেখুন http://outscorejs.org/#isEqual


1
var listTrue = ['a', 'a', 'a', 'a'];
var listFalse = ['a', 'a', 'a', 'ab'];

function areWeTheSame(list) { 
    var sample = list[0];
    return !(list.some(function(item) {
        return !(item == sample);
    }));
}

দয়া করে কিছু কোড পেস্ট করার পরিবর্তে আপনি কী করেছিলেন তাও ব্যাখ্যা করুন।
ওয়াউটার জে

1

ইহা সহজ. একটি ফাংশন তৈরি করুন এবং একটি পরামিতি পাস করুন। এই ফাংশনটিতে প্রথম সূচকটিকে একটি নতুন ভেরিয়েবলে অনুলিপি করুন। তারপরে অ্যারে দিয়ে লুপ এবং লুপ তৈরি করুন। একটি নতুন লুপের ভেরিয়েবল লুপের সমস্ত উপাদানের সমান কিনা তা পরীক্ষা করে একটি শর্ত সহ একটি লুপ তৈরি করুন। যদি লুপের সম্পূর্ণরূপে এর সমান রিটার্নটি সত্য হয় অন্যদিকে লুপের ভিতরে মিথ্যা ফিরিয়ে দেয়।

function isUniform(arra){
    var k=arra[0];
    for (var i = 0; i < arra.length; i++) {
        while(k!==arra[i]){
            return false;
        }
    }
    return true;
}

1

গৃহীত উত্তর কাজ করে মহান কিন্তু আমি একটি ক্ষুদ্র বিট যোগ করতে চেয়েছিলেন। এটি আমার ব্যবহারের পক্ষে কার্যকর হয়নি ===কারণ আমি অবজেক্টগুলির অ্যারেগুলির অ্যারে তুলনা করছিলাম, তবে আমার অ্যাপ্লিকেশনটিতে আমি দ্রুত-গভীর-সমতুল্য প্যাকেজটি ব্যবহার করছি যা আমি অত্যন্ত সুপারিশ করি। এটির সাথে আমার কোডটি এর মতো দেখাচ্ছে:

let areAllEqual = arrs.every((val, i, arr) => equal(val, arr[0]) );

এবং আমার ডেটা দেখতে এমন দেখাচ্ছে:

[  
  [
    {
      "ID": 28,
      "AuthorID": 121,
      "VisitTypeID": 2
    },
    {
      "ID": 115,
      "AuthorID": 121,
      "VisitTypeID": 1
    },
    {
      "ID": 121,
      "AuthorID": 121,
      "VisitTypeID": 1
    }
  ],
  [
    {
      "ID": 121,
      "AuthorID": 121,
      "VisitTypeID": 1
    }
  ],
  [
    {
      "ID": 5,
      "AuthorID": 121,
      "VisitTypeID": 1
    },
    {
      "ID": 121,
      "AuthorID": 121,
      "VisitTypeID": 1
    }
  ]
]

1
  1. অ্যারে যোগদান করে একটি স্ট্রিং তৈরি করুন।
  2. প্রদত্ত অ্যারের প্রথম অক্ষরের পুনরাবৃত্তি করে স্ট্রিং তৈরি করুন
  3. উভয় স্ট্রিং মেলে

	function checkArray(array){
		return array.join("") == array[0].repeat(array.length);	
	}

	console.log('array: [a,a,a,a]: ' + checkArray(['a', 'a', 'a', 'a']));
	console.log('array: [a,a,b,a]: ' + checkArray(['a', 'a', 'b', 'a']));

এবং আপনি সম্পন্ন!




0

ঠিক আছে, এটি আসলে খুব জটিল নয়। আমার দৃ strong় সন্দেহ আছে যে আপনি চেষ্টা করেননি। আপনি যা করেন তা হ'ল আপনি প্রথম মানটি বাছাই করুন, এটিকে ভেরিয়েবলে সংরক্ষণ করুন এবং তারপরে একটি forলুপের মধ্যে পরবর্তী সমস্ত মান প্রথমটির সাথে তুলনা করুন।
আমি ইচ্ছাকৃতভাবে কোনও কোড ভাগ করি নি। কীভাবে forব্যবহৃত হয় এবং কীভাবে ভেরিয়েবলের তুলনা করা হয় তা সন্ধান করুন।


8
আমি এই উত্তর পছন্দ করি না। এটি আপনাকে জানাতে দেয় না যে দ্বিতীয় মানটি তৃতীয় ইত্যাদির সমান হয় কিনা ইত্যাদি। স্পষ্টত নেস্টেড লুপ এটি করবে তবে এটি কোনও নবজাতকের স্ক্রিপ্টারের কাছে ধারণাগতভাবে আলাদা।
jtromans

3
@ জেট্রোম্যানস: সমতার ট্রানজিটিভ সম্পত্তি হওয়ার কারণে, যদি A == B এবং A == C থাকে তবে আমরা বি == সি জানি; কোনও নেস্টেড লুপ ইত্যাদির সাথে আপনাকে এটিকে "ম্যানুয়ালি" যাচাই করতে হবে না। একটি একক মানের (অ্যারেতে প্রথম মান, একটি স্বেচ্ছাসেবক নয়) এর তুলনায় পুনরাবৃত্তি করা এই উত্তরটির পরামর্শ দেয় এবং ঠিক তাই গ্রহণযোগ্য উত্তরও দেয়।
ov

@ov প্রকৃতপক্ষে, আমার তাড়াহুড়োয় আমি প্রশ্নটি ভুলভাবে লিখেছি, যা আমি তখন ভেবেছিলাম যে সমস্ত মান সমান (! ডু) আছে কিনা তা যাচাই করার চেয়ে আরও বেশি প্রয়োজন।
jtromans

9
এটা জটিল নয়। এবং উভয়ই পৃষ্ঠায় অন্য উত্তর নেই। তবে আমার কাছে এই উত্তরটি সবচেয়ে কম সহায়ক।
চার্লি

1
এটি মূলত ওপি-র প্রতি দৃ strong় বক্তব্য রেখে বোঝানো হয়েছে যে তিনি প্রশ্ন জিজ্ঞাসা করার আগে চিন্তা করার চেষ্টা করেছিলেন।
টোমা জ্যাটো - মনিকা

0

সাধারণ একটি লাইন সমাধান, কেবল এটি প্রথম এন্ট্রি দিয়ে ভরাট অ্যারের সাথে তুলনা করুন।

if(arr.join('') === Array(arr.length).fill(arr[0]).join(''))

এটি কোনও সমাধানের মতো বলে মনে হচ্ছে না যে কোনও জায়গায় ব্যবহার করা যেতে পারে
Lu4

এটি ঠিক আছে খুব কাছাকাছি। এর থেকে ভাল কিছু হতে পারে: ফাংশন অ্যারেঅফসেম (আর্ট) {রিটার্ন (arr.join ('')) == (নতুন অ্যারে (অর লেয়ার্থ লেন্থ + 1) .জুইন (অ্যারে [0]))); }
আরকাইন

0

আপনি ES6 তীর ফাংশন সিনট্যাক্স ব্যবহার করার সময় আর একটি আকর্ষণীয় উপায়:

x = ['a', 'a', 'a', 'a']
!x.filter(e=>e!==x[0])[0]  // true

x = ['a', 'a', 'b', 'a']
!x.filter(e=>e!==x[0])[0] // false

x = []
!x.filter(e=>e!==x[0])[0]  // true

এবং আপনি যখন অ্যারে (এক্স) এর জন্য পরিবর্তনশীলটি পুনরায় ব্যবহার করতে চান না:

!['a', 'a', 'a', 'a'].filter((e,i,a)=>e!==a[0])[0]    // true

আইএমও পূর্ববর্তী পোস্টার যারা অ্যারে.এভারি (...) ব্যবহার করেছিলেন তার কাছে সবচেয়ে পরিষ্কার সমাধান রয়েছে।


0
function isUniform(array) {   
  for (var i=1; i< array.length; i++) {
    if (array[i] !== array[0]) { return false; }
  }

  for (var i=1; i< array.length; i++) {
    if (array[i] === array[0]) { return true; }
  }
}
  • প্রথম লুপের জন্য; যখনই এটি অসম সনাক্ত করে, "মিথ্যা" ফেরত দেয়
  • প্রথম লুপটি চলে এবং যদি এটি মিথ্যা হয়, আমাদের "মিথ্যা" রয়েছে
  • যখন এটি মিথ্যা প্রত্যাবর্তন না করে, এর অর্থ সত্য হবে, তাই আমরা দ্বিতীয় লুপটি করি। এবং অবশ্যই আমাদের দ্বিতীয় লুপ থেকে "সত্য" থাকবে (কারণ প্রথম লুপটি এটি মিথ্যা নয় বলে খুঁজে পেয়েছে)

0

এটি কার্যকর হতে পারে, আপনি মন্তব্য আউট কোডটিও ব্যবহার করতে পারেন যা প্রদত্ত দৃশ্যের সাথে ভালভাবে জাগে।

function isUniform(){
	var arrayToMatch = [1,1,1,1,1];
	var temp = arrayToMatch[0];
	console.log(temp);
  /* return arrayToMatch.every(function(check){
    return check == temp;
   });*/
var bool;
   arrayToMatch.forEach(function(check){
    bool=(check == temp);
   })
  console.log(bool);
}
isUniform();


0

সীমিত আকার এবং সংগঠিত তালিকার অন্য একটি উপায়:

অ্যারে 1 = [1,2,3]; অ্যারে 2 = [1,2,3];

function isEqual(){

    return array1.toString()==array2.toString();
}

0

আপনি অ্যারেকে একটি সেটে রূপান্তর করতে পারেন এবং এর আকারটি পরীক্ষা করতে পারেন

আদিম অ্যারের এন্ট্রির ক্ষেত্রে, অর্থাত number, string:

const isArrayWithEqualEntries = array => new Set(array).size === 1

সমতা জন্য পরীক্ষা করার জন্য কিছু ক্ষেত্রের সাথে অবজেক্টগুলির অ্যারের ক্ষেত্রে, বলুন id:

const mapper = ({id}) => id
const isArrayWithEqualEntries = array => new Set(array.map(mapper)).size === 1

-4

পিএইচপি-তে একটি সমাধান খুব সরল, একটি লাইন পদ্ধতি:

(গণনা (অ্যারে_কাউন্ট_মূল্যগুলি ($ অ্যারে)) == 1)

উদাহরণ স্বরূপ :

$arr1 = ['a', 'a', 'a', 'a'];
$arr2 = ['a', 'a', 'b', 'a'];


print (count(array_count_values($arr1)) == 1 ? "identical" : "not identical"); // identical
print (count(array_count_values($arr2)) == 1 ? "identical" : "not identical"); // not identical

এখানেই শেষ.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.