উত্তর:
একটি বিদ্যমান অ্যারে সাফ করার উপায় A
:
পদ্ধতি 1
(এই প্রশ্নের আমার উত্তর ছিল)
A = [];
এই কোডটি ভেরিয়েবলটিকে A
একটি নতুন খালি অ্যারেতে সেট করবে । যদি আপনার আর কোথাও মূল অ্যারের উল্লেখA
না থাকে তবে এটি নিখুঁত কারণ এটি প্রকৃতপক্ষে একেবারে নতুন (খালি) অ্যারে তৈরি করে। আপনার এই পদ্ধতির সাথে সাবধানতা অবলম্বন করা উচিত কারণ আপনি যদি এই অ্যারেটিকে অন্য কোনও পরিবর্তনশীল বা সম্পত্তি থেকে রেফারেন্স করেন তবে মূল অ্যারেটি অপরিবর্তিত থাকবে। কেবলমাত্র এটি ব্যবহার করুন যদি আপনি কেবল অ্যারের মূল পরিবর্তনশীল দ্বারা রেফারেন্স করেন A
।
এটিও দ্রুততম সমাধান।
এই কোডটি নমুনাটি এই পদ্ধতিটি ব্যবহার করার সময় আপনি যে সমস্যার মুখোমুখি হতে পারেন তা দেখায়:
var arr1 = ['a','b','c','d','e','f'];
var arr2 = arr1; // Reference arr1 by another variable
arr1 = [];
console.log(arr2); // Output ['a','b','c','d','e','f']
পদ্ধতি 2 (যেমন প্রস্তাব দ্বারা ম্যাথু Crumley )
A.length = 0
এটি 0-এর দৈর্ঘ্য নির্ধারণ করে বিদ্যমান অ্যারেটিকে সাফ করবে Some কিছু লোক যুক্তি দেখিয়েছেন যে এটি জাভাস্ক্রিপ্টের সমস্ত বাস্তবায়নে কাজ করতে পারে না, তবে দেখা যাচ্ছে যে এটি এমন নয়। এটি ECMAScript 5 এ "কঠোর মোড" ব্যবহার করার সময়ও কাজ করে কারণ একটি অ্যারের দৈর্ঘ্যের সম্পত্তিটি পড়ার / লেখার সম্পত্তি।
পদ্ধতি 3 ( অ্যান্টনির পরামর্শ অনুসারে )
A.splice(0,A.length)
ব্যবহার .splice()
নিখুঁতভাবে কাজ করবে, তবে যেহেতু .splice()
ফাংশনটি সমস্ত মুছে ফেলা আইটেমগুলির সাথে একটি অ্যারে প্রদান করবে, এটি আসলে আসল অ্যারের একটি অনুলিপি ফিরে আসবে। বেঞ্চমার্কগুলি প্রস্তাব দেয় যে এটির যাবতীয় কার্যকারিতার উপর কোনও প্রভাব নেই।
পদ্ধতি 4 ( টাঙ্গুয়_ কে পরামর্শ দেওয়া হয়েছে )
while(A.length > 0) {
A.pop();
}
এই সমাধানটি খুব সংক্ষিপ্ত নয়, এবং এটি মূলতম উত্তরে উল্লেখ করা পূর্ববর্তী মানদণ্ডগুলির বিপরীতেও সবচেয়ে ধীর সমাধান solution
কর্মক্ষমতা
বিদ্যমান অ্যারে সাফ করার সমস্ত পদ্ধতির মধ্যে , পদ্ধতি 2 এবং 3 পারফরম্যান্সের ক্ষেত্রে খুব একই রকম এবং 4 পদ্ধতির চেয়ে অনেক দ্রুত । এই মানদণ্ডটি দেখুন ।
নীচে তাদের উত্তরে ডায়াডিসটিস দ্বারা চিহ্নিত হিসাবে , উপরে বর্ণিত চারটি পদ্ধতির কার্যকারিতা নির্ধারণ করতে ব্যবহৃত মূল মানদণ্ডগুলি ত্রুটিযুক্ত ছিল। আসল বেঞ্চমার্ক ক্লিয়ার করা অ্যারেটিকে পুনরায় ব্যবহার করেছে যাতে দ্বিতীয় পুনরাবৃত্তি ইতিমধ্যে খালি একটি অ্যারে সাফ করছিল।
নিম্নলিখিত মানদণ্ড এই ত্রুটিগুলি সমাধান করে: http://jsben.ch/#/hyj65 । এটি পরিষ্কারভাবে দেখায় যে পদ্ধতি # 2 (দৈর্ঘ্যের সম্পত্তি) এবং # 3 (বিভাজন) দ্রুততম (গণনা পদ্ধতি # 1 যা আসল অ্যারে পরিবর্তন করে না)।
এটি একটি আলোচিত বিষয় এবং প্রচুর বিতর্কের কারণ হয়ে দাঁড়িয়েছে। আসলে অনেকগুলি সঠিক উত্তর রয়েছে এবং যেহেতু এই উত্তরটি দীর্ঘ সময়ের জন্য গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত হয়েছে, আমি এখানে সমস্ত পদ্ধতি অন্তর্ভুক্ত করব। আপনি যদি এই উত্তরের পক্ষে ভোট দেন, দয়া করে অন্যান্য উত্তরগুলিও উত্তর দিন যা আমি উল্লেখ করেছি।
while (A.length) { A.pop(); }
, কোনও প্রয়োজন নেই> 0
> 0
আরও পাঠযোগ্য আইএমএইচও। এবং দুজনের মধ্যে পারফরম্যান্সের কোনও পার্থক্য নেই।
b
হওয়ার পরেও পুরানো অ্যারেতে একটি রেফারেন্স রয়েছে a
। c
এবং d
একই অ্যারে রেফারেন্স অবিরত। আউটপুটগুলির মধ্যে পার্থক্য তাই প্রত্যাশিত।
while(A.pop())
অ্যারেতে কোনও আইটেম মিথ্যা হলে আপনি ব্যবহার করতে পারবেন না । উদাহরণস্বরূপ এ = [2, 1, 0, -1, -2] ধরুন A এর সমান হবে [2, 1]। এমনকি while(A.pop() !== undefined)
কাজ করে না কারণ আপনার মানগুলির মধ্যে একটি হিসাবে অপরিজ্ঞাতকৃত একটি অ্যারে থাকতে পারে। সম্ভবত সংকলক কেন এটি অনুকূলিত করে না।
আপনার যদি মূল অ্যারেটি রাখা প্রয়োজন কারণ আপনার অন্যান্য উল্লেখ রয়েছে যা এটিও আপডেট হওয়া উচিত, আপনি এর দৈর্ঘ্য শূন্যে সেট করে একটি নতুন অ্যারে তৈরি না করে এটিকে সাফ করতে পারেন:
A.length = 0;
myarray.push(whatever)
এটি দৈর্ঘ্যে একটি যোগ করে। সুতরাং দৈর্ঘ্য নির্ধারণ করে অ্যারে ছাঁটাই, তবে এটি স্থায়ী নয়।
length
একটি বিশেষ সম্পত্তি, তবে কেবল এটিই পড়ে না, তাই এটি এখনও কার্যকর হবে।
একই অ্যারে রাখার সময় এখানে দ্রুততম কার্যকর বাস্তবায়ন ("পরিবর্তনযোগ্য"):
function clearArray(array) {
while (array.length) {
array.pop();
}
}
FYI এটিকে সরল করা যায় না while (array.pop())
: পরীক্ষাগুলি ব্যর্থ হবে।
এফওয়াইআই মানচিত্র এবং সেট সংজ্ঞায়িত করা হয়েছে clear()
, অ্যারেরclear()
জন্য এটি যুক্তিযুক্ত মনে হবে।
টাইপস্ক্রিপ্ট সংস্করণ:
function clearArray<T>(array: T[]) {
while (array.length) {
array.pop();
}
}
সংশ্লিষ্ট পরীক্ষা:
describe('clearArray()', () => {
test('clear regular array', () => {
const array = [1, 2, 3, 4, 5];
clearArray(array);
expect(array.length).toEqual(0);
expect(array[0]).toEqual(undefined);
expect(array[4]).toEqual(undefined);
});
test('clear array that contains undefined and null', () => {
const array = [1, undefined, 3, null, 5];
clearArray(array);
expect(array.length).toEqual(0);
expect(array[0]).toEqual(undefined);
expect(array[4]).toEqual(undefined);
});
});
এখানে আপডেট করা জেএসফুল: http://jsperf.com/array-destroy/32 http://jsperf.com/array-destroy/152
Array.prototype
এবং এটি কিছুটা পৃথকভাবে কাজ করে, তবে আপনার সমস্ত কোডটি [].clear()
কিছুটা ভুল ছিল। এটি ডিবাগ করতে মজা হবে না। সুতরাং, সাধারণ বার্তাটি হ'ল: গ্লোবালগুলি সংশোধন করবেন না।
function clear(arr) { while(arr.length) arr.pop(); }
, তারপর স্পষ্ট অ্যারে সঙ্গে clear(arr)
পরিবর্তে arr.clear()
।
.splice()
এবং .length=0
। মানদণ্ডগুলি সঠিক ছিল না। আমার আপডেট হওয়া উত্তরটি দেখুন।
splice
নীচে হিসাবে অ্যারের ক বিষয়বস্তু খালি করতে পদ্ধতিটি ব্যবহার করা আরও ক্রস ব্রাউজার বান্ধব এবং আরও অনুকূল সমাধান হতে পারে :
A.splice(0, A.length);
A.splice(0, A.length),0;
। এটি 0
ঠিক যেমন একটি রিটার্ন মান ছেড়ে A.length = 0;
যাবে। ফলে অ্যারের এখনও তৈরি করা হয় এবং উচিত ধীর চালানোর জন্য স্ক্রিপ্ট কারণ: ( jsperf ~ 56% ধীর)। ব্রাউজার বাস্তবায়ন এই প্রভাবিত করবে যদিও আমি কোন কারণে দেখতে splice
দ্রুততর সেটিং চেয়ে হবে length
।
A.splice(0)
কাজ করে।
উত্তরগুলি এখন পর্যন্ত 2739 আপগেটের চেয়ে কম নয় যে বিভ্রান্তিমূলক এবং ভুল।
প্রশ্নটি হল: "আপনি কীভাবে আপনার বিদ্যমান অ্যারেটি খালি করবেন?" যেমন A = [1,2,3,4]
।
" A = []
উত্তরটি হ'ল" বলা অজ্ঞ এবং একেবারেই ভুল। [] == []
হয় মিথ্যা ।
কারণ এই দুটি অ্যারে দুটি পৃথক পৃথক বস্তু, নিজস্ব দুটি পরিচয়, ডিজিটাল বিশ্বে প্রতিটি নিজস্ব নিজস্ব স্থান গ্রহণ করে।
ধরা যাক আপনার মা আপনাকে ট্র্যাশের ক্যান খালি করতে বলে।
A = [1,2,3,4]; A = [];
একটি অ্যারে অবজেক্ট খালি করা সবচেয়ে সহজ জিনিস:
A.length = 0;
এইভাবে, "এ" এর অধীন ক্যানটি কেবল খালি নয়, তবে এটি নতুন হিসাবেও পরিষ্কার!
তদ্ব্যতীত, ক্যান খালি না হওয়া পর্যন্ত আপনার হাতে হাতে আবর্জনা অপসারণ করার প্রয়োজন নেই! আপনাকে বিদ্যমানটিকে খালি করতে বলা হয়েছিল, পুরোপুরি, এক ঘুরে, ক্যান খালি না হওয়া পর্যন্ত ট্র্যাশটি না তুলতে বলা হবে:
while(A.length > 0) {
A.pop();
}
না, আপনার বাম হাতকে আবর্জনার নীচে রেখে তার ডানদিকে এটি উপরে রেখে ধরে এটির বিষয়বস্তুটি এখান থেকে টানতে সক্ষম হবেন:
A.splice(0, A.length);
না, আপনাকে এটি খালি করতে বলা হয়েছিল:
A.length = 0;
এটিই কেবলমাত্র একটি কোড যা প্রদত্ত জাভাস্ক্রিপ্ট অ্যারের সামগ্রীগুলি সঠিকভাবে খালি করে।
A(n) = A.splice( 0, A.length );
আপনার পূর্ববর্তী বিষয়বস্তুটিকে ব্যাকআপ করার ক্ষেত্রে একমাত্র ব্যবহারিক বিকল্প । Array.length
আপনি যদি সেই মৌলিক ঘটনাটি মিস করেন তবে PS একটি পঠন-লিখন সম্পত্তি property পদ্ধতি। অর্থ, আপনি এটিকে একটি নতুন দৈর্ঘ্যে প্রসারিত করতে পারবেন, আপনি যে দৈর্ঘ্যটি চান তা ছাঁটাতে পারবেন না এবং অন্যদের মধ্যে আপনি এর সদস্যদের দৈর্ঘ্য ৪. কমিয়ে দিয়ে সমস্ত সদস্যকে বাতিল করতে পারেন এটি অ্যারের একটি সুইস-ছুরি।
কর্মক্ষমতা পরীক্ষা:
http://jsperf.com/array-clear-methods/3
a = []; // 37% slower
a.length = 0; // 89% slower
a.splice(0, a.length) // 97% slower
while (a.length > 0) {
a.pop();
} // Fastest
আপনার অ্যারেগুলি "সাফ" হতে দেওয়ার জন্য আপনি এটি আপনার জাভাস্ক্রিপ্ট ফাইলটিতে যুক্ত করতে পারেন:
Array.prototype.clear = function() {
this.splice(0, this.length);
};
তারপরে আপনি এটি ব্যবহার করতে পারেন:
var list = [1, 2, 3];
list.clear();
অথবা আপনি যদি নিশ্চিত হতে চান যে আপনি কোনও কিছু ধ্বংস করেন না:
if (!Array.prototype.clear) {
Array.prototype.clear = function() {
this.splice(0, this.length);
};
}
প্রচুর লোকেরা মনে করেন আপনার নেটিভ অবজেক্টগুলি (অ্যারের মতো) সংশোধন করা উচিত নয় এবং আমি সম্মত হতে আগ্রহী। কীভাবে এটি পরিচালনা করবেন তা সিদ্ধান্ত নেওয়ার ক্ষেত্রে দয়া করে সাবধানতা অবলম্বন করুন।
clear
কী কী সহ শুরু হবে এমন সমস্যাটি কীভাবে হবে ?
উত্তর এবং মন্তব্যে উভয় ক্ষেত্রে পপ / শিফট পারফরম্যান্স সম্পর্কে অনেকগুলি বিভ্রান্তি এবং ভুল তথ্য রয়েছে। যখন / পপ সমাধানের (প্রত্যাশারূপে) সবচেয়ে খারাপ কর্মক্ষমতা রয়েছে । আসলে যা ঘটছে তা হ'ল সেটআপটি প্রতিটি নমুনার জন্য একবারে রান করে যা লুপে স্নিপেট চালায়। উদাহরণ:
var arr = [];
for (var i = 0; i < 100; i++) {
arr.push(Math.random());
}
for (var j = 0; j < 1000; j++) {
while (arr.length > 0) {
arr.pop(); // this executes 100 times, not 100000
}
}
আমি একটি নতুন পরীক্ষা তৈরি করেছি যা সঠিকভাবে কাজ করে:
http://jsperf.com/empty-javascript-array-redux
সতর্কতা: পরীক্ষার এই সংস্করণেও আপনি প্রকৃত পার্থক্য দেখতে পাচ্ছেন না কারণ অ্যারে ক্লোন করা পরীক্ষার বেশিরভাগ সময় নেয়। এটি এখনও দেখায় যে splice
অ্যারেটি সাফ করার দ্রুততম উপায় ( []
বিবেচনায় নেই কারণ এটি দ্রুততম হলেও এটি আসলে বিদ্যমান অ্যারেটি সাফ করছে না)।
আপনি যদি মেমরি বরাদ্দে আগ্রহী হন, আপনি ক্রোম দেব সরঞ্জামগুলির টাইমলাইন ট্যাবের সাথে এই জেফফিডেলের মতো কিছু ব্যবহার করে প্রতিটি পদ্ধতির তুলনা করতে পারেন । অ্যারে ক্লিয়ারিংয়ের পরে আবর্জনা সংগ্রহের জন্য জোর করে নীচে ট্র্যাশ বিন আইকনটি ব্যবহার করতে চাইবেন। এটি আপনাকে আপনার পছন্দসই ব্রাউজারের জন্য আরও সুনির্দিষ্ট উত্তর দিতে হবে। এখানে প্রচুর উত্তর পুরানো এবং আমি তাদের উপর নির্ভর করব না বরং উপরের @ টাঙ্গুয়_ক এর উত্তর হিসাবে পরীক্ষা করবো।
(পূর্বোক্ত ট্যাবে পরিচিতির জন্য আপনি এখানে পরীক্ষা করে দেখতে পারেন )
স্ট্যাকওভারফ্লো আমাকে জেসফিডালটি অনুলিপি করতে বাধ্য করে তাই এটি এখানে:
<html>
<script>
var size = 1000*100
window.onload = function() {
document.getElementById("quantifier").value = size
}
function scaffold()
{
console.log("processing Scaffold...");
a = new Array
}
function start()
{
size = document.getElementById("quantifier").value
console.log("Starting... quantifier is " + size);
console.log("starting test")
for (i=0; i<size; i++){
a[i]="something"
}
console.log("done...")
}
function tearDown()
{
console.log("processing teardown");
a.length=0
}
</script>
<body>
<span style="color:green;">Quantifier:</span>
<input id="quantifier" style="color:green;" type="text"></input>
<button onclick="scaffold()">Scaffold</button>
<button onclick="start()">Start</button>
<button onclick="tearDown()">Clean</button>
<br/>
</body>
</html>
এবং আপনার খেয়াল করা উচিত যে এটি অ্যারে উপাদানগুলির ধরণের উপর নির্ভর করতে পারে, কারণ জাভাস্ক্রিপ্ট অন্যান্য আদিম ধরণের চেয়ে স্ট্রিং পরিচালনা করে, বস্তুর অ্যারেগুলি উল্লেখ না করে। প্রকারটি যা ঘটে তা প্রভাবিত করতে পারে।
আপনার পক্ষে এটি করার জন্য আপনি সহজেই একটি ফাংশন তৈরি করতে পারেন, দৈর্ঘ্য পরিবর্তন করতে বা পুনরায় ব্যবহারের জন্য ফাংশন হিসাবে এটিকে দেশীয় অ্যারেতে যুক্ত করতে পারেন remove()
।
আপনার এই অ্যারেটি কল্পনা করুন:
var arr = [1, 2, 3, 4, 5]; //the array
ঠিক আছে, কেবল এটি চালান:
arr.length = 0; //change the length
এবং ফলাফল:
[] //result
অ্যারে খালি করার সহজ উপায় ...
এছাড়াও লুপ ব্যবহার করা যা প্রয়োজনীয় নয় তবে এটি করার আরও একটি উপায়:
/* could be arr.pop() or arr.splice(0)
don't need to return as main array get changed */
function remove(arr) {
while(arr.length) {
arr.shift();
}
}
এমন জটিল উপায় রয়েছে যা সম্পর্কে আপনি ভাবতে পারেন, উদাহরণস্বরূপ এরকম কিছু:
arr.splice(0, arr.length); //[]
সুতরাং যদি আরে 5 টি আইটেম থাকে তবে এটি 0 থেকে 5 টি আইটেম বিভক্ত হবে, যার অর্থ অ্যারেতে কিছুই থাকবে না।
এছাড়াও অন্যান্য উপায়গুলি যেমন অ্যারেটিকে পুনরায় নিয়োগের জন্য উদাহরণস্বরূপ:
arr = []; //[]
আপনি যদি অ্যারে ফাংশনগুলি লক্ষ্য করেন তবে এটি করার আরও অনেক উপায় রয়েছে তবে সর্বাধিক প্রস্তাবিত একটি দৈর্ঘ্য পরিবর্তন করতে পারে।
যেমনটি আমি প্রথম জায়গায় বলেছি, আপনি আপনার প্রোটোটাইপ মুছে ফেলতে পারেন () কারণ এটি আপনার প্রশ্নের উত্তর। আপনি কেবল উপরের পদ্ধতিগুলির মধ্যে একটি চয়ন করতে পারেন এবং এটি জাভাস্ক্রিপ্টে অ্যারে অবজেক্টে প্রোটোটাইপ করতে পারেন, এরকম কিছু:
Array.prototype.remove = Array.prototype.remove || function() {
this.splice(0, this.length);
};
এবং আপনার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটিতে কোনও অ্যারে খালি করার জন্য আপনি কেবল এটির মতো এটি বলতে পারেন:
arr.remove(); //[]
Array.prototype.clear = function() {
this.length = 0;
};
এবং এটি কল: array.clear();
A.splice(0);
আমি যে কোডটি নিয়ে কাজ করছি তা সবেমাত্র এটি করেছি। এটি অ্যারে সাফ করেছে।
আপনি যদি ব্যবহার করছেন
a = [];
তারপরে আপনি একটিতে নতুন অ্যারে রেফারেন্স নির্ধারণ করছেন, যদি এর মধ্যে রেফারেন্সটি ইতিমধ্যে অন্য কোনও ভেরিয়েবলের জন্য বরাদ্দ করা হয়, তবে এটিও অ্যারেটি খালি করবে না এবং তাই আবর্জনা সংগ্রহকারী সেই মেমরিটি সংগ্রহ করবে না।
প্রাক্তন জন্য।
var a=[1,2,3];
var b=a;
a=[];
console.log(b);// It will print [1,2,3];
অথবা
a.length = 0;
যখন আমরা নির্দিষ্ট করি a.length
, আমরা কেবল অ্যারের সীমানা পুনরায় সেট করছি এবং বিশ্রাম অ্যারের উপাদানগুলির জন্য মেমরি আবর্জনা সংগ্রহকারী দ্বারা সংযুক্ত হবে।
এই দুটি সমাধানের পরিবর্তে আরও ভাল।
a.splice(0,a.length)
এবং
while(a.length > 0) {
a.pop();
}
Kenshou.html এর পূর্ববর্তী উত্তর অনুসারে, দ্বিতীয় পদ্ধতিটি দ্রুত।
a.length
, আমি দেখতে পাচ্ছি না এই নতুন উত্তরটি থ্রেডে কী যুক্ত করে?
a.length=0;
সম্পাদনা করা হবে তখন একটি নতুন অ্যারে তৈরি করবে তা নিশ্চিত করার জন্য আপনার কোনও উত্স আছে ? এই ইঞ্জিনগুলি কীভাবে কাজ করবে a.length=500;
এবং a.length=4;
?
var a = [1]; var b = a; a.length = 0; console.log(b)
প্রিন্ট করে Array [ ]
, তাই মনে হচ্ছে এটি আমার জন্য নতুন অ্যারে তৈরি করছে না।
জানুয়ারীর প্রাথমিক পরামর্শের একটি পরিবর্তিত সংস্করণ ব্যবহার করুন :
var originalLength = A.length;
for (var i = originalLength; i > 0; i--) {
A.pop();
}
আপনি যদি ধ্রুবক ব্যবহার করেন তবে আপনার কোনও বিকল্প নেই:
const numbers = [1, 2, 3]
আপনি পুনরায় সাইন করতে পারবেন না:
numbers = []
আপনি কেবল ছাঁটাই করতে পারেন:
numbers.length = 0
একটি অ্যারের বর্তমান মেমরি অবস্থান খালি করতে: 'myArray.length = 0'
বা'myArray.pop() UN-till its length is 0'
length
: আপনি যে কোনও সময় অ্যারে কাটাতে দৈর্ঘ্যের সম্পত্তিটি সেট করতে পারেন। আপনি যখন কোনও অ্যারের দৈর্ঘ্যের সম্পত্তি পরিবর্তন করে প্রসারিত করেন তখন প্রকৃত উপাদানগুলির সংখ্যা বৃদ্ধি পায়।pop()
: পপ পদ্ধতিটি মুছে ফেলে অ্যারের থেকে শেষ উপাদানটি এবং মুছে ফেলা মানটি ফেরত দেয়।shift()
: শিফট পদ্ধতিতে উপাদানটিকে সরিয়ে দেয় শূন্যতম সূচকে একটানা সূচকে মানগুলি নীচে নামিয়ে দেয়, তারপরে সরানো মানটি ফেরত দেয় returnsউদাহরণ:
var arr = ['77'];
arr.length = 20;
console.log("Increasing : ", arr); // (20) ["77", empty × 19]
arr.length = 12;
console.log("Truncating : ", arr); // (12) ["77", empty × 11]
var mainArr = new Array();
mainArr = ['1', '2', '3', '4'];
var refArr = mainArr;
console.log('Current', mainArr, 'Refered', refArr);
refArr.length = 3;
console.log('Length: ~ Current', mainArr, 'Refered', refArr);
mainArr.push('0');
console.log('Push to the End of Current Array Memory Location \n~ Current', mainArr, 'Refered', refArr);
mainArr.poptill_length(0);
console.log('Empty Array \n~ Current', mainArr, 'Refered', refArr);
Array.prototype.poptill_length = function (e) {
while (this.length) {
if( this.length == e ) break;
console.log('removed last element:', this.pop());
}
};
new Array() | []
Array constructor
বা ব্যবহার করে নতুন মেমরি অবস্থানের সাথে একটি অ্যারে তৈরি করুন array literal
।
mainArr = []; // a new empty array is addressed to mainArr.
var arr = new Array('10'); // Array constructor
arr.unshift('1'); // add to the front
arr.push('15'); // add to the end
console.log("After Adding : ", arr); // ["1", "10", "15"]
arr.pop(); // remove from the end
arr.shift(); // remove from the front
console.log("After Removing : ", arr); // ["10"]
var arrLit = ['14', '17'];
console.log("array literal « ", indexedItem( arrLit ) ); // {0,14}{1,17}
function indexedItem( arr ) {
var indexedStr = "";
arr.forEach(function(item, index, array) {
indexedStr += "{"+index+","+item+"}";
console.log(item, index);
});
return indexedStr;
}
slice()
: স্লাইস ফাংশনটি ব্যবহার করে আমরা নতুন মেমরি ঠিকানার সাথে মূল অ্যারে থেকে উপাদানগুলির একটি অগভীর অনুলিপি পাই, যাতে ক্লোনআরারের কোনও পরিবর্তন কোনও আসল | আসল অ্যারেতে প্রভাবিত না করে।
var shallowCopy = mainArr.slice(); // this is how to make a copy
var cloneArr = mainArr.slice(0, 3);
console.log('Main', mainArr, '\tCloned', cloneArr);
cloneArr.length = 0; // Clears current memory location of an array.
console.log('Main', mainArr, '\tCloned', cloneArr);
length = ?
পরিবর্তে বলা উচিত ছিল length
।
আমি অবাক হয়েছি এখনও কেউ এর পরামর্শ দেয়নি:
let xs = [1,2,3,4];
for (let i in xs)
delete xs[i];
এটি অন্যান্য সমাধানগুলি থেকে একেবারে আলাদা অবস্থায় একটি অ্যারে দেয়। এক অর্থে অ্যারেটি 'খালি' করা হয়েছে:
xs
=> Array [ <4 empty slots> ]
[...xs]
=> Array [ undefined, undefined, undefined, undefined ]
xs.length
=> 4
xs[0]
=> ReferenceError: reference to undefined property xs[0]
আপনি [,,,,]
বা এর সাথে সমতুল্য অ্যারে উত্পাদন করতে পারেনArray(4)
আপনার যদি কৌনিক 2+ ফর্মআরে খালি করতে হয় তবে নীচে ব্যবহার করুন।
public emptyFormArray(formArray:FormArray) {
for (let i = formArray.controls.length - 1; i >= 0; i--) {
formArray.removeAt(i);
}
}