জাভাস্ক্রিপ্টে অ্যারেটিকে পৃথক ভেরিয়েবলে আনপ্যাকিং করা হচ্ছে


141

এটি একটি সাধারণ সমস্যা এবং আমি এটি আগেও করেছি। আমি শুধু মনে করতে পারি না কীভাবে, বা ঠিক কী বলা হয়েছিল।

পাইথনে আমি এটি করতে পারি:

arr = ['one', 'two']
one, two = arr

আমি কীভাবে জাভাস্ক্রিপ্টে এটি করব?

উত্তর:


173

এটি বর্তমানে ক্রস-ব্রাউজারের সামঞ্জস্যপূর্ণ সমাধান আফাইক:

var one = arr[0],
    two = arr[1];

ES6 ধ্বংসাত্মক কার্যের অনুমতি দেবে:

let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'

অথবা, আপনার প্রাথমিক উদাহরণটিতে লেগে যেতে:

var arr = ['one', 'two'];
var [one, two] = arr;

আপনি একটি ডিফল্ট মানও তৈরি করতে পারেন:

const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'

5
ডেসট্রাকচারিং অ্যাসাইনমেন্ট আজকের হিসাবে পূর্ণ সমর্থন আছে kangax.github.io/compat-table/es6/#test-destructuring
grandrew

20

যে নিয়োগ ডেসট্রাকচারিং । আপনি নিম্নলিখিত সিনট্যাক্স সহ কিছু ব্রাউজারে এটি করতে পারেন:

[one, two] = arr;

এটি ব্যাবেল এবং ট্রেসারের মতো সর্বশেষতম ব্রাউজার এবং ট্রান্সপোর্টারগুলিতে সমর্থিত । এটি ECMAScript 4 এর সাথে প্রবর্তিত একটি বৈশিষ্ট্য ছিল যা পরবর্তীতে ECMAScript হারমনিতে পরিণত হয়েছিল, যা শেষ পর্যন্ত ES 2015 তে পরিণত হয়েছিল।


দেখে মনে হচ্ছে এটি ES6 (2015) এর অংশ, ES4 নয়? ecma-international.org/ecma-262/6.0/…
জাব

@ জবাব: ধন্যবাদ! কখনও কখনও এই পুরানো উত্তরগুলি ভুলে যায় এবং পুরানো হয়ে যায়, যদিও দেখে মনে হচ্ছে ম্যাথিয়াস ইতিমধ্যে তার উত্তরে এই তথ্যটি যুক্ত করেছে :)
অ্যান্ডি ই

19

প্রশ্নটি বরং পুরানো তবে আমি এই বিকল্পটি (2016) সমাধান পোস্ট করতে চাই: যে কেউ স্প্রেড অপারেটর "..." ব্যবহার করতে পারে ।

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);

6

আপনি যদি অ্যারের আইটেমগুলিকে কোনও ফাংশন আর্গুমেন্ট হিসাবে পাস করতে চান তবে আপনি অ্যারের প্রয়োগ ফাংশনটি ব্যবহার করতে পারেন।


4
আমি নিশ্চিত নই যে একটি জাভাস্ক্রিপ্টের Arrayকোনও .apply()ফাংশন রয়েছে। আমার মনে হয় আপনি বোঝানো some_function.apply(this, my_array)। এই উত্তরটি
কিট


2
var one = arr[0];
var two = arr[1];

1
varভেরিয়েবলগুলি বিশ্বব্যাপী সুযোগকে দূষিত করা থেকে রক্ষা করতে আপনার ব্যবহার করা উচিত ।
ম্যাথিয়াস বাইনেন্স

আমি কেবল এর সমস্ত ঘোষিত ভেরিয়েবলগুলি ধরে নিচ্ছি :)

varদুটি সুযোগের আলাদা আলাদা varঘোষণার চেয়ে প্রতিটি সুযোগের জন্য একসাথে সমস্ত ঘোষণা করা সম্ভবত আরও ভাল ধারণা ।
ম্যাথিয়াস ব্যেনেন্স

2

কফিস্ক্রিপ্টটিতে এটি রয়েছে: http://jashkenas.github.com/c کافی-script/# pattern_matching

এবং, পৃষ্ঠার শীর্ষ থেকে উদ্ধৃত:

"কফিস্ক্রিপ্টটি একটি সামান্য ভাষা যা জাভাস্ক্রিপ্টে সংকলিত হয়েছে it এটিকে জাভাস্ক্রিপ্টের কম অস্থায়ী বাচ্চা ভাই হিসাবে ভাবেন - একই জিন, মোটামুটি একই উচ্চতা, তবে স্টাইলের ভিন্ন ধারণা a জাভাস্ক্রিপ্টে তাদের সমতুল্য, এটি বলার এটি অন্য একটি উপায় "


1
এটি প্রশ্নের উত্তর দেয় না। আমি প্রশংসা করি যে কফিস্ক্রিপ্টের কিছু ঝরঝরে জিনিস রয়েছে তবে প্রশ্নটি জাভাস্ক্রিপ্ট সম্পর্কে।
হোভিস বিডল

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