মান অনুসারে বস্তুর অ্যারে বাছাই করতে লোডাশ ব্যবহার করুন


105

আমি 'নাম' মান (লোডাশ ব্যবহার করে) দ্বারা একটি অ্যারে বাছাই করার চেষ্টা করছি। আমি নীচে সমাধান তৈরি করতে লোড্যাশ ডক্স ব্যবহার করেছি .অর্ডারবাইয়ের তেমন কোনও প্রভাব পড়েছে বলে মনে হয় না। অ্যারে বাছাই করার সঠিক উপায়ে কি কেউ কিছু আলোকপাত করতে পারে?

চরস অ্যারে

[  
   {  
      "id":25,
      "name":"Anakin Skywalker",
      "createdAt":"2017-04-12T12:48:55.000Z",
      "updatedAt":"2017-04-12T12:48:55.000Z"
   },
   {  
      "id":1,
      "name":"Luke Skywalker",
      "createdAt":"2017-04-12T11:25:03.000Z",
      "updatedAt":"2017-04-12T11:25:03.000Z"
   }
]

ফাংশন কোড

 var chars = this.state.characters;

 _.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})

উত্তর:


205

এই পদ্ধতিটি orderByইনপুট অ্যারে পরিবর্তন করে না, আপনাকে ফলাফলটিকে আপনার অ্যারেতে নিয়োগ করতে হবে:

var chars = this.state.characters;

chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})

হুঁ, এখনও অ্যারে বাছাই করা মনে হয় না। নিশ্চিত না যে আমার প্রশ্ন আপডেট করা উচিত বা একটি নতুন তৈরি করা উচিত

4
উত্তরটি আপডেট করেছে, সম্ভবত আপনার ত্রুটিটি অ্যারের পরিবর্তে দুটি পরামিতি পাস করার কারণে হয়েছে'name', 'asc'
আর্টামিস ইয়ং

4
" orderByইনপুট অ্যারে পরিবর্তন করে না" ... " orderByঅ্যারে জায়গায় স্থান পরিবর্তন করে।" অভিহিত শব্দটি সম্ভবত "স্থান না-থাকা" বা "স্থানের বাইরে"। দেখুন: en.wikipedia.org/wiki/In-place_algorithm
ডেমোক্রাটিক Pilafian

আসলে আপনি ঠিক বলেছেন, আমি এই বাক্যটি সরিয়ে দিয়েছি কারণ এটির উত্তরে কিছুই যুক্ত হয়নি
আর্টিমিস ইয়ং

সেই দ্বিতীয় প্যারামিটারটি ['asc']আরোহণের অর্ডার দেয় না, এটি অর্জনের জন্য যে উপায়টি হবে reverse()তার পরে যুক্ত করুন orderBy(কমপক্ষে সংস্করণে 4.17.15)
দিয়েগো অর্টিজ

64

আপনি লোড্যাশ সাজ্টবাই ( https://lodash.com/docs/4.17.4#sortBy ) ব্যবহার করতে পারেন ।

আপনার কোডটি এর মতো হতে পারে:

const myArray = [  
   {  
      "id":25,
      "name":"Anakin Skywalker",
      "createdAt":"2017-04-12T12:48:55.000Z",
      "updatedAt":"2017-04-12T12:48:55.000Z"
   },
   {  
      "id":1,
      "name":"Luke Skywalker",
      "createdAt":"2017-04-12T11:25:03.000Z",
      "updatedAt":"2017-04-12T11:25:03.000Z"
   }
]

const myOrderedArray = _.sortBy(myArray, o => o.name)

32
আপনি শর্টহ্যান্ডটিও ব্যবহার করতে পারেন:_.sortBy(myArray, 'name')
ডোন

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