আমি কীভাবে জাভাস্ক্রিপ্ট এসোসিয়েটিভ অ্যারে থেকে জিনিসগুলি সরিয়ে ফেলব?


618

ধরুন আমার কাছে এই কোডটি রয়েছে:

var myArray = new Object();
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;

এখন যদি আমি "পদবি" মুছে ফেলতে চাইতাম? .... এর কিছু সমতুল্য আছে
myArray["lastname"].remove()?

(উপাদানের সংখ্যা গুরুত্বপূর্ণ এবং আমি জিনিসগুলি পরিষ্কার রাখতে চাই কারণ আমার উপাদানটি চলে গেছে)


27
একটি টিপ: অ্যারে এবং মানচিত্রগুলি বিভ্রান্ত করবেন না। কিছু ভাষা, যেমন পিএইচপি, উভয়ের জন্য একক বস্তু থাকে। যদিও আপনি এখানে সঠিক ধরণটি ব্যবহার করেছেন (নতুন অবজেক্ট ()) আপনি এটির নাম দিয়েছেন আমারআরে, এটি কেবল একটি ল্যাঙ্গুয়েজের মানদণ্ডের বিষয়।
হুয়ান মেন্ডেস

ভুলে যাবেন না যে জাভাস্ক্রিপ্ট টাইপ-কম এবং সবকিছুই একটি অবজেক্ট। নীচে শৌলের উত্তর দেখুন।
স্টিভেক

4
@ স্টাফেনক্রিস্টিন - সুনির্দিষ্টভাবে বলতে গেলে, জেএসের ধরন রয়েছে তবে গতিশীল এবং দুর্বল উপায়ে। উদাহরণস্বরূপ, যদিও এর ভেরিয়েবলগুলি প্রকৃতপক্ষে টাইপলেস, তাদের মানগুলি নয়। এটি গতিশীল অংশ। দুর্বল বোঝায় যে বিভিন্ন মান ধরণের মধ্যে অপারেশনগুলি দৃ strictly়ভাবে সংজ্ঞায়িত হয় না এবং পর্দার অন্তর্গত রূপান্তরগুলির উপর নির্ভর করে; উদাহরণস্বরূপ "Test" + {};একটি পুরোপুরি বৈধ জেএস স্টেটমেন্ট।
শৌল

উত্তর:


1134

জাভাস্ক্রিপ্টের অবজেক্টগুলিকে সম্মিলিত অ্যারে, ম্যাপিং কী (বৈশিষ্ট্য) হিসাবে মান হিসাবে বিবেচনা করা যেতে পারে।

জাভাস্ক্রিপ্টের কোনও অবজেক্ট থেকে কোনও সম্পত্তি অপসারণ করতে আপনি deleteঅপারেটরটি ব্যবহার করেন :

const o = { lastName: 'foo' }
o.hasOwnProperty('lastName') // true
delete o['lastName']
o.hasOwnProperty('lastName') // false

নোট করুন যে যখন deleteকোনও এর সূচী সম্পত্তিতে প্রয়োগ করা হয় Arrayআপনি একটি বিশিষ্ট জনবহুল অ্যারে (অর্থাত্‍ অনুপস্থিত সূচক সহ একটি অ্যারে) তৈরি করবেন।

এর উদাহরণগুলির সাথে কাজ করার সময় Array, আপনি যদি খুব কম জনবহুল অ্যারে তৈরি করতে না চান - এবং আপনি সাধারণত না করেন - তবে আপনার ব্যবহার করা উচিত Array#spliceবা Array#pop

নোট করুন যে deleteজাভাস্ক্রিপ্টে অপারেটর সরাসরি মেমরি ফ্রি করে না। এর উদ্দেশ্য হ'ল বস্তুগুলি থেকে বৈশিষ্ট্যগুলি সরিয়ে ফেলা। অবশ্যই, যদি কোনও সম্পত্তি মুছে ফেলা হচ্ছে তবে কোনও সামগ্রীর কেবলমাত্র অবশিষ্ট রেফারেন্স ধরে রাখে o, তবে oপরবর্তীকালে সাধারণ উপায়ে সংগ্রহ করা আবর্জনা হবে।

deleteঅপারেটরটি ব্যবহার করা জাভাস্ক্রিপ্ট ইঞ্জিনগুলির কোডটি অনুকূলকরণের ক্ষমতাকে প্রভাবিত করতে পারে ।


18
এটি যদি অ্যারে অবজেক্টে ব্যবহার করে কোনও বিদ্যমান উপাদান, যেমন, সরানোর জন্য সমস্যা তৈরি করে delete myArray[0]স্ট্যাকওভারফ্লো.com/a/9973592/426379 এবং অ্যারে উপাদানগুলি মোছা
শৌল

4
কী সমস্যা হবে?
গোটস

26
@ গোটক্স - lengthএকটি অ্যারের বস্তুর সম্পত্তি অপরিবর্তিত রয়েছে।
শৌল

12
@Saul আছে: হবে সমস্যার হলে myArrayসত্যিই একটি অ্যারের হিসাবে ব্যবহৃত হয় - কিন্তু এটা নয় ( myArray, এটি একটি অবজেক্ট দুর্ভাগ্যজনক নাম)। সুতরাং এই ক্ষেত্রে deleteঠিক আছে। মনে রাখবেন যে এটি new Array()এ্যাসোসিয়েটিভ অ্যারে হিসাবে তৈরি এবং ব্যবহার করা হলেও এটি ঠিক আছে। আপনার সতর্কতা হ'ল যদি কেউ সত্যিকারের অ্যারেগুলি ব্যবহার করে তবে সচেতন হওয়ার মতো কিছু।
জনোদোদো

2
@ জোহানডো - সত্য এ কারণেই আমি আমার প্রাথমিক মন্তব্যটি এটির সাথে শুরু করলাম এটি যদি অ্যারে অবজেক্ট উদাহরণ হিসাবে ব্যবহার করা হয় তবে এটি সমস্যার কারণ হবে । তবুও আমি এমন একটি পদ্ধতিকে পছন্দ করি যা সমস্ত ক্ষেত্রে সঠিকভাবে সম্পাদন করে, নীচে আমার উত্তরটি দেখুন see
শৌল

79

জাভাস্ক্রিপ্টের সমস্ত অবজেক্ট হ্যাশ টেবিল / এসোসিয়েটিভ অ্যারে হিসাবে প্রয়োগ করা হয়। সুতরাং, নিম্নলিখিত সমতুল্য:

alert(myObj["SomeProperty"]);
alert(myObj.SomeProperty);

এবং, ইতিমধ্যে ইঙ্গিত হিসাবে, আপনি deleteকীওয়ার্ডের মাধ্যমে কোনও বস্তু থেকে একটি সম্পত্তি "মুছে ফেলুন" , যা আপনি দুটি উপায়ে ব্যবহার করতে পারেন:

delete myObj["SomeProperty"];
delete myObj.SomeProperty;

আশা করি অতিরিক্ত তথ্য সাহায্য করবে ...


10
লক্ষ করা উচিত যে সম্পত্তিটি কোনও সাধারণ শব্দ হিসাবে না থাকলে ডট স্বরলিপিটি কাজ করে না। অর্থাত্ myObj['some;property']কাজ করে, তবে myObj.some;propertyতা করবে না (স্পষ্ট কারণে)। এছাড়াও এটি স্পষ্ট নাও হতে পারে আপনি বন্ধনীর স্বরলিখনের মধ্যে একটি পরিবর্তনশীল ব্যবহার করতে পারেন, যেমনvar x = 'SomeProperty'; alert(myObj[x])
কিপ

2
"জাভাস্ক্রিপ্টের সমস্ত অবজেক্ট হ্যাশ টেবিল / এসোসিয়েটিভ অ্যারে হিসাবে প্রয়োগ করা হয়েছে" "- মিথ্যা। ভি 8 কোনও বস্তুকে একটি গোপন শ্রেণি + ঘন প্যাকযুক্ত ক্ষেত্র হিসাবে সঞ্চয় করতে পছন্দ করে। আপনি যদি তাদের কাছে অদ্ভুত স্টাফ করেন তবে (যেমন ক্ষেত্রগুলি সরানো) এটি পর্দার আড়ালে একটি হ্যাশ মানচিত্র দেয় এবং ব্যবহার করে।
জন ডিভোরাক

4
@ জনডভোরাক - আরে, আপনি জানেন যে এই উত্তরটি কখন লেখা হয়েছিল, হ্যাঁ? এই বিবরণটি বেশিরভাগ উদ্দেশ্যেই ছিল এবং এখনও যথেষ্ট। এটি বলেছিল, আমি ক্লান্তিকরভাবে পেডেন্টিক হওয়া বুঝতে পারি। :)
জেসন বুটিং

41

পূর্ববর্তী উত্তরগুলির মধ্যে কোনওটিই জাভাস্ক্রিপ্টের সাথে শুরু করার জন্য সাহসী অ্যারে নেই বলে এই বিষয়টি দেখায় না - এর arrayমতো কোনও প্রকার নেই , দেখুন typeof

জাভাস্ক্রিপ্টের যা আছে তা হ'ল গতিশীল বৈশিষ্ট্যযুক্ত বস্তুগুলির উদাহরণ। যখন বৈশিষ্ট্যগুলি অ্যারে অবজেক্টের উপাদানগুলির সাথে বিভ্রান্ত হয় তখন খারাপ জিনিসগুলি to এটিকে আবদ্ধ হতে বাধ্য:

সমস্যা

var elements = new Array()

elements.push(document.getElementsByTagName("head")[0])
elements.push(document.getElementsByTagName("title")[0])
elements["prop"] = document.getElementsByTagName("body")[0]

console.log("number of elements: ", elements.length)   // returns 2
delete elements[1]
console.log("number of elements: ", elements.length)   // returns 2 (?!)

for (var i = 0; i < elements.length; i++)
{
   // uh-oh... throws a TypeError when i == 1
   elements[i].onmouseover = function () { window.alert("Over It.")}
   console.log("success at index: ", i)
}

সমাধান

আপনার উপর ঝাপসা না করে এমন একটি সর্বজনীন অপসারণ ফাংশন রাখতে, ব্যবহার করুন:

Object.prototype.removeItem = function (key) {
   if (!this.hasOwnProperty(key))
      return
   if (isNaN(parseInt(key)) || !(this instanceof Array))
      delete this[key]
   else
      this.splice(key, 1)
};

//
// Code sample.
//
var elements = new Array()

elements.push(document.getElementsByTagName("head")[0])
elements.push(document.getElementsByTagName("title")[0])
elements["prop"] = document.getElementsByTagName("body")[0]

console.log(elements.length)                        // returns 2
elements.removeItem("prop")
elements.removeItem(0)
console.log(elements.hasOwnProperty("prop"))        // returns false as it should
console.log(elements.length)                        // returns 1 as it should

8
এই সমাধানটির দুটি বিষয় রয়েছে: এটি জরিপে এই অ্যারে এবং অবজেক্টগুলি সম্পূর্ণ ভিন্ন প্রাণী (এটি আপনি জানেন, তবে দৃশ্যত ওপি তা নয়) লুকায় এবং এটি প্রোটোটাইপ ব্যবহার করে। ওপি আরও ভাল হবে যদি সে অ্যারে এবং অবজেক্টস সম্পর্কে জানতে পারে (এবং তার অনুসারে তার ভেরিয়েবলের নাম দেবে) - দুজনের মধ্যে পার্থক্য আড়াল করার চেষ্টা করা তাকে আরও বেশি সমস্যায় ফেলবে। অবশ্যই IMHO।
জনোদোদো

1
@ জোহান্দোডো - জেএসের সমস্তগুলি Arrayবস্তু, চেষ্টা typeof new Array();বা typeof []যাচাই করার জন্য। Arrayএটি কেবল একটি নির্দিষ্ট ধরণের জিনিস এবং একেবারে "ভিন্ন প্রাণী" নয়। জেএসে, বস্তুগুলি তাদের নির্মাণকারীর নাম এবং প্রোটোটাইপ চেইন দ্বারা পৃথক করা হয়, প্রোটোটাইপ-ভিত্তিক প্রোগ্রামিং দেখুন
শৌল

9
আপনি মুল ব্যাপারটি - ই বুঝতে পারছেন না। আমি জানি যে অ্যারেগুলিও বস্তুগত, তবে এর অর্থ এই নয় যে এগুলিকে এটি ব্যবহার করা বুদ্ধিমানের কাজ। প্রোগ্রামারকে সিদ্ধান্ত নেওয়া উচিত যে তিনি অ্যারে (পুশ, পপ, [], ...) সহ কিছু বা অবজেক্ট / "সহযোগী অ্যারে" হিসাবে ব্যবহার করতে চান কিনা। মিক্স এবং ম্যাচটি কোনও ভাল রেসিপি নয়, ঠিক আপনার সমস্যাগুলি যে সমস্যাগুলি আড়াল করার চেষ্টা করছে তা হ'ল কারণ। আপনি যদি আগে থেকেই সিদ্ধান্ত নেন কোন ডিজাইনের প্যাটার্নটি ব্যবহার করতে হবে (অ্যারে বা অবজেক্ট) এ জাতীয় কোনও সমস্যা হবে না।
জনদোদো

7
@ জোহানডোডো - আপনি বিশেষত কোন সমস্যার কথা বলছেন? উপরের কোডটির উদ্দেশ্য হ'ল একটি সাধারণ পলিমারফিক ফাংশন সরবরাহ করে ঘাটতি deleteঅপারেটরটির সাথে সম্পর্কিত আচরণ করা Array
শৌল

1
deleteকোনও ঘাটতি নেই। deleteবৈশিষ্ট্য অপসারণ করার জন্য ডিজাইন করা হয়েছে। এটাই. অ্যারের সূচকে মুছুন অপারেটর প্রয়োগ করা সেই সূচকটিকে সরিয়ে দেয়। এর আর কী দরকার? আপনার কাছে একটি বিচ্ছিন্ন অ্যারে রয়েছে, যা ভাষার বৈশিষ্ট্য। ব্যবহার: আপনি যদি একটি বিক্ষিপ্ত অ্যারের না চান তাহলে সূচক মুছবেন না spliceবা pop
বেন অ্যাস্টন

35

এটি কেবল অবজেক্টটিকে মুছে ফেলা করে তবে অ্যারের দৈর্ঘ্য একই রাখে।

অপসারণ করতে আপনার এমন কিছু করতে হবে:

array.splice(index, 1);

11
প্রকৃতপক্ষে, তবে এই ক্ষেত্রে একটি অ্যারে ব্যবহার করা হচ্ছে না, কেবল একটি সরল পুরানো অবজেক্ট, সুতরাং এটির দৈর্ঘ্য বা বিভাজন পদ্ধতি নেই।
MooGoo

2
@Andreaa Panagiotidis ছাড়া যখন আমরা অ্যারেগুলির, যে ক্ষেত্রে এটা সময় 100% 🙂 ভুল বিষয়ে কথা বলছি না
Drenai

17

গৃহীত উত্তরটি সঠিক হলেও এটি কেন কাজ করে তা ব্যাখ্যা অনুপস্থিত।

প্রথমত, আপনার কোডটি সত্যটি প্রতিফলিত করে যে এটি কোনও অ্যারে নয় :

var myObject = new Object();
myObject["firstname"] = "Bob";
myObject["lastname"] = "Smith";
myObject["age"] = 25;

মনে রাখবেন যে সমস্ত বস্তু ( Arrayগুলি সহ ) এভাবে ব্যবহার করা যেতে পারে। তবে, স্ট্যান্ডার্ড জেএস অ্যারে ফাংশনগুলি (পপ, পুশ, ...) অবজেক্টগুলিতে কাজ করার আশা করবেন না!

গৃহীত উত্তরে যেমন বলা হয়েছে, আপনি তারপরে deleteঅবজেক্টগুলি থেকে এন্ট্রিগুলি সরাতে ব্যবহার করতে পারেন:

delete myObject["lastname"]

আপনি কোন পথে যেতে চান তা সিদ্ধান্ত নেওয়া উচিত - হয় বস্তুগুলি (সহযোগী অ্যারে / অভিধান) ব্যবহার করুন বা অ্যারে (মানচিত্র) ব্যবহার করুন। তাদের দুজনের সাথে কখনও মেশাবেন না।


6
খুব ভাল উত্তর। আমি কেবল এটি পড়তে যে কাউকেই পরামর্শ দেব যে জাভাস্ক্রিপ্টে অ্যারেগুলি 'মানচিত্র' হিসাবে বিমূর্ত করা উচিত নয়, বরং 'তালিকা' করা উচিত। কারণ অ্যারে ব্যবহার করার সময় আপনার উপাদানগুলির সূচকের উপর নিয়ন্ত্রণ রাখার চেষ্টা করা উচিত নয়। যদি আপনি এটি চেষ্টা করেন ... ভাল, ঠিক করবেন না: ডি
রডলফো 42

6

spliceকোনও অবজেক্ট অ্যারে থেকে আইটেমটি সম্পূর্ণরূপে অপসারণের জন্য পদ্ধতিটি ব্যবহার করুন :

Object.prototype.removeItem = function (key, value) {
    if (value == undefined)
        return;

    for (var i in this) {
        if (this[i][key] == value) {
            this.splice(i, 1);
        }
    }
};

var collection = [
    { id: "5f299a5d-7793-47be-a827-bca227dbef95", title: "one" },
    { id: "87353080-8f49-46b9-9281-162a41ddb8df", title: "two" },
    { id: "a1af832c-9028-4690-9793-d623ecc75a95", title: "three" }
];

collection.removeItem("id", "87353080-8f49-46b9-9281-162a41ddb8df");

1
এটি আরও জেনেরিক সমাধান, আপনার জেএস ফাইলে যুক্ত হতে পারে এবং পদ্ধতিটি কেবল একটি অ্যারে নয়, সমস্ত অ্যারেগুলিতে উপলভ্য হবে।
হুসেন

6

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনি যা ব্যবহার করছেন তা জাভাস্ক্রিপ্ট অ্যারে নয়, তবে একটি জাভাস্ক্রিপ্ট অবজেক্ট যা অন্যান্য কীগুলিতে স্ট্রিংয়ে রূপান্তরিত হয় তা বাদ দিয়ে প্রায় অন্যান্য ভাষায় একটি সহযোগী অ্যারের মতো কাজ করে। নতুন মানচিত্র কীগুলি তাদের মূল ধরণের হিসাবে সঞ্চয় করে।

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

var myArray = ['Bob', 'Smith', 25];
myArray = myArray.filter(function(item) {
    return item !== 'Smith';
});

আপনার যদি কোনও পুরানো ব্রাউজার এবং jQuery থাকে, jQuery এর একটি $.grepপদ্ধতি রয়েছে যা একইভাবে কাজ করে:

myArray = $.grep(myArray, function(item) {
    return item !== 'Smith';
});

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


5

আপনি অবজেক্ট ব্যবহার করছেন, আপনার সাথে শুরু করার জন্য কোনও এসোসিয়েটিভ অ্যারে নেই। একটি সহযোগী অ্যারে সহ, আইটেমগুলি যুক্ত করা এবং অপসারণটি এরকম হয়:

    Array.prototype.contains = function(obj) 
    {
        var i = this.length;
        while (i--) 
        {
            if (this[i] === obj) 
            {
                return true;
            }
        }
        return false;
    }


    Array.prototype.add = function(key, value) 
    {
        if(this.contains(key))
            this[key] = value;
        else
        {
            this.push(key);
            this[key] = value;
        }
    }


    Array.prototype.remove = function(key) 
    {
        for(var i = 0; i < this.length; ++i)
        {
            if(this[i] == key)
            {
                this.splice(i, 1);
                return;
            }
        }
    }



    // Read a page's GET URL variables and return them as an associative array.
    function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }

        return vars;
    }



    function ForwardAndHideVariables() {
        var dictParameters = getUrlVars();

        dictParameters.add("mno", "pqr");
        dictParameters.add("mno", "stfu");

        dictParameters.remove("mno");



        for(var i = 0; i < dictParameters.length; i++)
        {
            var key = dictParameters[i];
            var value = dictParameters[key];
            alert(key + "=" + value);
        }
        // And now forward with HTTP-POST
        aa_post_to_url("Default.aspx", dictParameters);
    }


    function aa_post_to_url(path, params, method) {
        method = method || "post";

        var form = document.createElement("form");

        //move the submit function to another variable
        //so that it doesn't get written over if a parameter name is 'submit'
        form._submit_function_ = form.submit;

        form.setAttribute("method", method);
        form.setAttribute("action", path);

        for(var i = 0; i < params.length; i++)
        {
            var key = params[i];

            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
        }

        document.body.appendChild(form);
        form._submit_function_(); //call the renamed function
    }

4

আপনি আপনার মানচিত্র থেকে স্পষ্টভাবে এটি 'অপরিজ্ঞাত' বরাদ্দ করে একটি এন্ট্রি সরাতে পারেন। আপনার ক্ষেত্রে যেমন:

myArray ["শেষ নাম"] = অপরিবর্তিত;


এটি এমন ক্ষেত্রে কার্যকর হতে পারে যেখানে অভিধানে কীটি উপস্থিত রয়েছে কিনা তা কেউ নিশ্চিত করে না, তবে যদি তা হয় তবে এটি স্যানিটাইজ করতে চায়। আমি ভুল যদি অ্যামিটিস ভুল করি তবে আমাকে সংশোধন করুন।
হাসান বৈগ

3

যদি কোনও কারণে মুছুন কীটি কাজ করছে না (যেমন এটি আমার পক্ষে কাজ করে না)

আপনি এটিকে ছড়িয়ে দিতে পারেন এবং তারপরে অপরিবর্তিত মানগুলিকে ফিল্টার করতে পারেন

// to cut out one element via arr.splice(indexToRemove, numberToRemove);
array.splice(key, 1)
array.filter(function(n){return n});

স্পাইস উপাদানগুলি সরানো উপাদানগুলি থেকে চেষ্টা করুন এবং তাদের চেইন করবেন না;


3

আমরা এটি একটি ফাংশন হিসাবেও ব্যবহার করতে পারি। প্রোটোটাইপ হিসাবে ব্যবহৃত হলে কৌণিক কিছু ত্রুটি নিক্ষেপ করে। ধন্যবাদ @ হার্পিওয়ার এটি আমাকে একটি সমস্যা সমাধানে সহায়তা করেছে।

var removeItem = function (object, key, value) {
    if (value == undefined)
        return;

    for (var i in object) {
        if (object[i][key] == value) {
            object.splice(i, 1);
        }
    }
};

var collection = [
    { id: "5f299a5d-7793-47be-a827-bca227dbef95", title: "one" },
    { id: "87353080-8f49-46b9-9281-162a41ddb8df", title: "two" },
    { id: "a1af832c-9028-4690-9793-d623ecc75a95", title: "three" }
];

removeItem(collection, "id", "87353080-8f49-46b9-9281-162a41ddb8df");


1

"delete"কীওয়ার্ড ব্যবহার করে এটি জাভাস্ক্রিপ্টের অ্যারে থেকে অ্যারের উপাদানটি মুছবে।

উদাহরণ স্বরূপ,

নিম্নলিখিত বিবৃতি বিবেচনা করুন।

var arrayElementToDelete = new Object();

arrayElementToDelete["id"]           = "XERTYB00G1"; 
arrayElementToDelete["first_name"]   = "Employee_one";
arrayElementToDelete["status"]       = "Active"; 

delete arrayElementToDelete["status"];

কোডের শেষ লাইনটি অ্যারে থেকে অ্যারের উপাদানটি হ'ল কে কী "স্থিতি"।


0
var myArray = newmyArray = new Object(); 
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;

var s = JSON.stringify(myArray);

s.replace(/"lastname[^,}]+,/g,'');
newmyArray = JSON.parse(p);

লুপিং / পুনরাবৃত্তি ছাড়াই আমরা একই ফল পাই


0

"অ্যারে" এর জন্য:

আপনি যদি সূচকটি জানেন:

array.splice(index, 1);

যদি আপনি মানটি জানেন:

function removeItem(array, value) {
    var index = array.indexOf(value);
    if (index > -1) {
        array.splice(index, 1);
    }
    return array;
}

deleteবস্তুর ক্ষেত্রে সর্বাধিক উন্নত উত্তর ভাল কাজ করে তবে আসল অ্যারেগুলির জন্য নয়। যদি আমি deleteএটি ব্যবহার করি তবে লুপগুলি থেকে উপাদানগুলি সরিয়ে ফেলা যায় তবে উপাদানটিকে emptyঅ্যারে ও পরিবর্তনের দৈর্ঘ্য হিসাবে রাখে । এটি কিছু পরিস্থিতিতে সমস্যা হতে পারে।

উদাহরণস্বরূপ, যদি আমি myArray.toString () এর মাধ্যমে অপসারণের পরে মাইআর্রে করি তবে deleteএটি খালি প্রবেশের অর্থাত্‍ তৈরি করে ,,,


0

আমার একমাত্র কার্যকরী পদ্ধতি:

function removeItem (array, value) {
    var i = 0;
    while (i < array.length) {
        if(array[i] === value) {
            array.splice(i, 1);
        } else {
            ++i;
        }
    }
    return array;
}

ব্যবহার:

var new = removeItem( ["apple","banana", "orange"],  "apple");
// ---> ["banana", "orange"]

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