জাভাস্ক্রিপ্টের সাথে বিপরীত ক্রমে কোনও অ্যারে মানচিত্র () ব্যবহার করার কোনও উপায় আছে কি?


94

আমি map()জাভাস্ক্রিপ্ট অ্যারেতে ফাংশনটি ব্যবহার করতে চাই, তবে আমি এটিটি বিপরীত ক্রমে পরিচালনা করতে চাই।

কারণটি হ'ল, আমি একটি উল্কা প্রকল্পে স্ট্যাকড রিএ্যাক্ট উপাদানগুলি সরবরাহ করছি এবং নীচের বাকী লোড ইমেজগুলি শীর্ষের স্তরের উপাদানটিকে প্রথমে রেন্ডার করতে চাই।

var myArray = ['a', 'b', 'c', 'd', 'e'];
myArray.map(function (el, index, coll) {
    console.log(el + " ")
});

প্রিন্ট আউট করে a b c d eতবে আমার ইচ্ছে আছে যে কোনও মানচিত্রের বিপরীত () মুদ্রিত ছিলe d c b a

কোনও পরামর্শ?


4
আপনি reverseঅ্যারে না কেন ?
জন

4
উপাদানগুলি অর্ডার করতে আমি অ্যারে সূচক দ্বারা জেড-সূচক সেট করি। আমি মনে করি আমি জেড-ইনডেক্সটি নেতিবাচক হতে পারি।
রবিন নিউহাউস

একটি ভাল ধারণার মতই শোনাচ্ছে।
জন

পার্শ্ব নোটে, আপনি mapকী ফিরে আসছেন এমন অ্যারেটি ব্যবহার করছেন ? অন্যথায়, আপনি বিবেচনা করা উচিত forEach
ক্যানন

4
আপনি মানচিত্র কলব্যাকের মধ্যে বিপরীত উপাদান অ্যাক্সেস করতে পারেন:console.log(coll[coll.length - index - 1] + " ")
le_m

উত্তর:


147

আপনি যদি মূল অ্যারেটি उलट করতে না চান তবে আপনি এর অগভীর অনুলিপি তৈরি করতে পারেন তারপরে বিপরীত অ্যারের মানচিত্র,

myArray.slice(0).reverse().map(function(...

আমি জেড-ইনডেক্স নির্দিষ্ট করার জন্য কেবল নেতিবাচক সূচকটি ব্যবহার করে শেষ করেছি, তবে আমি যেভাবে প্রশ্নটি ফ্রেম করেছি সেটি এটি সবচেয়ে সঠিক।
রবিন নিউহাউস

4
আমাদের কেন .স্লাইস (0) দরকার? মাইআর্রে.স্লাইস (0) এর পরিবর্তে মাইআর্রে.রেভারস () কে না? রিভার্স ()? আমার মন্তব্যের জন্য উত্তর মত দেখায় এখানে: stackoverflow.com/questions/5024085/...
Haradzieniec

হারাডজিনিয়েক - এটি কীভাবে মূল প্রশ্নটি তৈরি করা হয়েছিল তার বিশদগুলির সাথে যায়, জেড-ইনডেক্স সিএসএস সম্পত্তি নির্ধারণের জন্য মূল ক্রমটি প্রয়োজন ছিল, তবে বিপরীতে মুদ্রিত হয়েছিল।
অ্যাডামকুপার 86

slice(0)যেমন প্রয়োজন হয় না reverse()একটি নতুন অ্যারে ফিরে যান এবং বর্তমান অ্যারের পরিবর্তন করা হয় না। @ অ্যাডামকুপার 86 আমি আশা করি আপনি এটি পরিবর্তন করেছেন।
ফাহাদ লিহিদহেব

4
@ ফাহ্ডলিহিদহেব reverse()মূল অ্যারেটি পরিবর্তন করেছেন।
ফেরাস

20

অ্যারেটিকে মোটেও বদলাচ্ছেন না, এখানে একটি ওয়ান-লাইন ও (এন) সমাধান আমি নিয়ে এসেছি:

myArray.map((val, index, array) => array[array.length - 1 - index]);

valএখানে ব্যবহৃত হয় না, তাই আমি মনে করি না যে এটি ওপি খুঁজছিল? (এটি এখনও একটি ভাল সমাধান)
পল রাজ্জান বার্গ

অতিরিক্তভাবে, মানচিত্রের তৃতীয় যুক্তি () নিজেই অ্যারে হয়
নট

19

তুমি ব্যবহার করতে পার Array.prototype.reduceRight()

var myArray = ["a", "b", "c", "d", "e"];
var res = myArray.reduceRight(function (arr, last, index, coll) {
    console.log(last, index);
    return (arr = arr.concat(last))
}, []);
console.log(res, myArray)


নয়েস (যদি আপনি যাইহোক হ্রাস সম্পাদন করতে চান) - এমডিএন: হ্রাস রাইট () পদ্ধতিটি কোনও একক মানকে হ্রাস করার জন্য একটি সঞ্চয়ের বিরুদ্ধে এবং অ্যারের প্রতিটি মান (ডান থেকে বামে) এর বিরুদ্ধে ফাংশন প্রয়োগ করে।
তমুসজেরোয়েস

8

নামযুক্ত কলব্যাক ফাংশন সহ

const items = [1, 2, 3]; 
const reversedItems = items.map(function iterateItems(item) {
  return item; // or any logic you want to perform
}).reverse();

শর্টহ্যান্ড (নামযুক্ত কলব্যাক ফাংশন ব্যতীত) - তীর সিনট্যাক্স, ES6

const items = [1, 2, 3];
const reversedItems = items.map(item => item).reverse();

ফলাফল এখানে

এখানে চিত্র বর্ণনা লিখুন


মানচিত্রটি অগভীর অনুলিপি হিসাবে ব্যবহৃত হচ্ছে
তমুসজেরোয়েস

7

আর একটি সমাধান হতে পারে:

const reverseArray = (arr) => arr.map((_, idx, arr) => arr[arr.length - 1 - idx ]);

আপনি মূলত অ্যারে সূচকগুলি নিয়ে কাজ করেন


4
এটি যেতে একটি অদ্ভুত উপায় বলে মনে হচ্ছে, তবে আপনি যদি উপাদানটি ছাড়াও সূচীতে অ্যাক্সেস পেতে চান তবে সত্যিকার অর্থে কোনও হ্রাস করতে চান না etc. পরিষ্কার সমাধান।
রিয়েলহ্যান্ডি

4
আপনার যদি আর্যাপ ব্যবহার করে মানচিত্রের ভিতরে আরও কাজ করার প্রয়োজন হয় [...] এর জন্য দ্বিতীয় কপি বা আসল অ্যারে চালিত করার প্রয়োজন হয় না। 3 য় প্যারামিটার সম্পর্কে ভুলে গেছেন। আমি কি খুঁজছিলাম!
তমুসজেরোয়েস

6

আমি একবার মানচিত্রের বিপরীত ফাংশনটি লিখতে পছন্দ করি, তারপরে এটি ব্যবহার করুন। এছাড়াও এটি অ্যারে অনুলিপি করার প্রয়োজন নেই।

function mapReverse(array, fn) {
    return array.reduceRight(function (result, el) {
        result.push(fn(el));
        return result;
    }, []);
}

console.log(mapReverse([1, 2, 3], function (i) { return i; }))
// [ 3, 2, 1 ]
console.log(mapReverse([1, 2, 3], function (i) { return i * 2; }))
// [ 6, 4, 2 ]

1
function mapRevers(reverse) {
    let reversed = reverse.map( (num,index,reverse) => reverse[(reverse.length-1)-index] );
    return reversed;
}

console.log(mapRevers(myArray));

আমি আপনি উল্টাগুলি মানচিত্রে অ্যারে পাস করি এবং ফাংশনে আপনি বিপরীত অ্যারেটি ফিরিয়ে দেন। মানচিত্রে সিবিতে আপনি কেবল সূচকগুলি 10 (দৈর্ঘ্য) থেকে পাসের অ্যারে থেকে 1 এর নিচে গণনা করে নিন


এই কোডটি কী করছে সে সম্পর্কে লিখিত ব্যাখ্যা সহায়ক হতে পারে।
প্রো প্রশ্ন

0

এখানে আমার টাইপস্ক্রিপ্ট সমাধান যা উভয় হে (এন) এবং উভয় অ্যারে দিয়ে রান রোধ করে অন্যান্য সমাধানগুলির চেয়ে বেশি দক্ষ:

function reverseMap<T, O>(arg: T[], fn: (a: T) => O) {
   return arg.map((_, i, arr) => fn(arr[arr.length - i - 1]))
}

জাভাস্ক্রিপ্টে:

const reverseMap = (arg, fn) => arg.map((_, i, arr) => fn(arr[arr.length - 1 - i]))

// Or 

function reverseMap(arg, fn) {
    return arg.map((_, i, arr) => fn(arr[arr.length - i - 1]))
}

-1

আপনি প্রথমে myArray.revers () করতে পারেন।

var myArray = ['a', 'b', 'c', 'd', 'e'];
myArray.reverse().map(function (el, index, coll) {
    console.log(el + " ")
});

এটি সাধারণভাবে আমার সমাধান হতে পারে তবে আমি শীর্ষস্থানীয় কার্ডটি ব্যবহার করছি সেটআপটিতে সর্বশেষ সূচী দিয়ে রাখা হয়েছে। আমার ধারণা, আরও কিছু ভাল ইনডেক্সিং সমস্যা সমাধান করতে পারে।
রবিন নিউহাউস

16
ঠিক যেমন একটি নোট, এটি স্থিতিস্থল অ্যারেটিকে বিপরীত করবে, অর্থাত এটি ধ্বংসাত্মকভাবে অ্যারের ক্রমকে পরিবর্তন করবে।
অ্যাডামকুপার 86

-2

একটি পুরানো প্রশ্ন তবে নতুন দর্শকদের জন্য, মানচিত্রটি ব্যবহার করে অ্যারেটি রিভার্স করার সর্বোত্তম উপায়

var myArray = ['a', 'b', 'c', 'd', 'e'];
[...myArray].map(() => myArray.pop());

এটি আসল অ্যারেটি পরিবর্তন করে
TamusJRoyce

সম্ভবত আপনি বোঝাতে চেয়েছিলেন : [...myArray].map((_, _, arr) => arr.pop());?
মাদেও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.