লোডাসের কি হয়েছে _ প্লাক?


273

আমি একবার লোডাশ ব্যবহার করতাম _.pluck... আমি ছিনতাই পছন্দ করতাম ...

লোড্যাশ আর সমর্থন করে না বুঝে pluck(লোড্যাশ ৪.x হিসাবে), পরিবর্তে কী ব্যবহার করবেন তা মনে রাখার জন্য আমি লড়াই করছি ...

আমি ডক্সে গিয়েছিলাম , সিএমডি-এফ চাপলাম, টাইপ করা 'প্লাক', তবে আমার দরিদ্র পরিত্যক্ত বন্ধুকে এমনকি একটি যথাযথ উল্লেখও দেওয়া হচ্ছে না ... এমনকি 'প্রতিস্থাপনও করা হয়নি' ... ...

এর পরিবর্তে আমার কী ব্যবহার করা উচিত তা দয়া করে কেউ আমাকে স্মরণ করিয়ে দিতে পারেন?



উত্তর:


411

আহ হা! Lodash পরিবর্তণের এটি সব বলছে ...

" পুনরাবৃত্তি শর্টহ্যান্ডের _.pluckপক্ষে সরানো হয়েছে _.map"

var objects = [{ 'a': 1 }, { 'a': 2 }];

// in 3.10.1
_.pluck(objects, 'a'); // → [1, 2]
_.map(objects, 'a'); // → [1, 2]

// in 4.0.0
_.map(objects, 'a'); // → [1, 2]

110
তারা কি কেবল দুজনকেই রাখতে পারত না ...? আমি কেবল নামগুলির পরিবর্তে জিনিসগুলির নাম পরিবর্তন করার প্রয়োজন দেখছি না।
কেনি ওয়ার্ডেন

17
যদিও এটি "নামকরণ" নয় - মানচিত্র ইতিমধ্যে বিদ্যমান ছিল - এবং খালি কেবল সরানো হয়েছিল। মানচিত্রটি একই যুক্তি স্বাক্ষরের সাথে একই কার্যকারিতা সরবরাহ করতে ঘটে।
ক্রিস

51
আমার বাড়িতে দু'টি ঘরের দরজা কেন চাই? যদি তারা উভয়ই একই কাজ করে তবে লোকজনকে বিভ্রান্তি থেকে বাঁচান এবং একটি থেকে মুক্তি পান rid আমার মতে এটি ব্রেকিং পরিবর্তনের পক্ষে মূল্যবান। অতিরিক্ত জাঙ্ক থেকে মুক্তি পান, এপিআই সরীকরণ করুন এবং লোকেরা অন্য ডোরবেলটি ব্যবহার করতে শিখতে পারে। এটির মতো এটি ব্যবহার করা শক্ত নয়। আমি আশা করি আরও বিকাশকারীরা ক্রাফট অপসারণ করবে। ব্রেকিং পরিবর্তন প্রবর্তনের জন্য লোডাশ দলে +1 করুন (সত্যিই এখানে কোনও বিদ্রূপ নেই)।
ল্যান্ডন পোচ

27
কেবল ফানিজের জন্য প্লক অপসারণ করার অর্থ কেউ কখনই নিরাপদে লোডাশ আপডেট করতে পারে না। এটি কোনও সংকলিত ভাষা মতো নয় ... তাই বিরক্তিকর ...
স্কট স্টাফোর্ড

8
@ স্কট স্টাফর্ড তাই এটিকে ব্রেকিং পরিবর্তন বলা হয় । বড় সংস্করণগুলি পরিবর্তিত হওয়ার পরে যদি আপনি চেঞ্জলগটি পড়তে বিরক্ত না করেন তবে বড় সংস্করণগুলি আপডেট করার ক্ষেত্রে বিরক্ত করবেন না। আপনি একই প্রধান সংস্করণে নিরাপদে আপডেট করতে পারবেন।
ওলিগোফ্রেন

71

ES6 চালু হওয়ার পরে _.mapবা প্রয়োজন নেই _.pluck

ES6 জাভাস্ক্রিপ্ট ব্যবহার করে এখানে একটি বিকল্প রয়েছে:

clips.map(clip => clip.id)


3
এমনকি ES6 এর প্রয়োজন নেই: Array.prototype.mapES5.1 স্ট্যান্ডার্ডে in ব্রাউজার সমর্থন দেখুন - এটি 2017 সালে যতটা চিন্তা করা দরকার ততই ফিরে গেছে, সম্ভবত!
davnicwil

2
@ Array.prototype.mapড্যাভনিকুইল ইএস 5.1, নিশ্চিত, তবে বেনাম =>ফাংশনগুলির জন্য সুন্দর তীর সিনট্যাক্সটি এটি নয় isn't ;)
00dani

3
@ 00 দানি ভালো কথা! আমার চোখগুলি পুরোপুরি চর্বিযুক্ত তীরের উপরে চলে গেল। আহ্, clips.map(function (clip) { return clip.id })এখনও খুব খারাপ আমি অনুমান করি না ;-)
davnicwil

11
আপনি যদি ES6clips.map(({id}) => id)
ড। পিল

1
এটি খুব সত্য তবে _.pluckকিছু প্রাক ES6 প্রকল্প লোডাসের পদ্ধতি ব্যবহার করতে পারে বলে কী হয়েছিল তা জেনে রাখা কার্যকর। :)
csalmeida


2

আপনি যদি সত্যই _.pluckসমর্থন ফিরে চান , আপনি একটি মিশিন ব্যবহার করতে পারেন:

const _ = require("lodash")

_.mixin({
    pluck: _.map
})

কারণ mapএখন একটি ফাংশনের পরিবর্তে একটি স্ট্রিং ("পুনরুক্তি") সমর্থন করে argument


pluck! = map। প্লাক আপনাকে স্ট্রিংয়ে যেতে দেয় এবং দেওয়ার মতো হয়function (record) { return(record[that_string]) }
ব্রায়ান আন্ডারউড

@ ব্রায়ান উন্ডারউড ধন্যবাদ! আমি পুনরুক্তি করব: _.mapসঠিকভাবে ব্যবহার করা হলে একটি কার্যকরী সমতা হিসাবে ব্যবহার করা যেতে পারে।
রিচি বেনডাল

-2

অথবা খাঁটি ES6 ননলড্যাশ পদ্ধতিটি এর মতো করে দেখুন

const reducer = (array, object) => {
  array.push(object.a)
  return array
}

var objects = [{ 'a': 1 }, { 'a': 2 }];
objects.reduce(reducer, [])

এটি অযথা জটিল, যখন আপনি এটি করতে পারেন objects.map(object => object.a)
jkjustjoshing
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.