javascript - বস্তুর সম্পত্তি উপর ভিত্তি করে অ্যারে উপাদান সরান




jquery arrays (7)

jandy এর সমাধান সম্ভবত সর্বোত্তম, তবে যদি আপনি ফিল্টারের উপর নির্ভর করতে না পারেন তবে আপনি এমন কিছু করতে পারেন:

var myArray = [
    {field: 'id', operator: 'eq', value: 'id'}, 
    {field: 'cStatus', operator: 'eq', value: 'cStatus'}, 
    {field: 'money', operator: 'eq', value: "money"}
];

myArray.remove_key = function(key){
    var i = 0, 
        keyval = null;
    for( ; i < this.length; i++){
        if(this[i].field == key){
            keyval = this.splice(i, 1);
            break;
        }
    }
    return keyval;
}

আমার মত বস্তুর একটি অ্যারে আছে:

var myArray = [
    {field: 'id', operator: 'eq', value: id}, 
    {field: 'cStatus', operator: 'eq', value: cStatus}, 
    {field: 'money', operator: 'eq', value: money}
];

আমি কিভাবে তার সম্পত্তি উপর ভিত্তি করে একটি নির্দিষ্ট এক মুছে ফেলতে পারি?

উদাহরণস্বরূপ, আমি কীভাবে অ্যারে অবজেক্টটিকে 'অর্থ' দিয়ে ক্ষেত্রের সম্পত্তি হিসাবে সরিয়ে দেব?


অ্যারে মাধ্যমে ক্ষয়প্রাপ্ত, এবং আপনি চান না splice আউট। সহজ ব্যবহারের জন্য, পিছন দিকে পুনরাবৃত্তি করুন যাতে আপনাকে অ্যারের লাইভ প্রকৃতিতে অ্যাকাউন্টটি বিবেচনা করতে হয় না:

for (var i = myArray.length - 1; i >= 0; --i) {
    if (myArray[i].field == "money") {
        myArray.splice(i,1);
    }
}

আপনি নির্দিষ্ট উপাদান সূচী পেতে এবং তারপর এটি ব্যবহার splice পেতে lodash এর findIndex ব্যবহার করতে পারেন।

myArray.splice(_.findIndex(myArray, function(item) {
    return item.value === 'money';
}), 1);

হালনাগাদ

আপনি ES6 এর findIndex() ব্যবহার করতে পারেন

FindIndex () পদ্ধতি অ্যারের প্রথম উপাদান সূচী প্রদান করে যা প্রদান করা পরীক্ষার ফাংশনটি সন্তুষ্ট করে। অন্যথায় -1 ফিরে।

myArray.splice(myArray.findIndex(myArray, function(item) {
    return item.value === 'money';
}), 1);

আপনি যদি jQuery ব্যবহার না করেন তবে কোডটি অনুসরণ করুন। Demo

var myArray = [
    {field: 'id', operator: 'eq', value: 'id'}, 
    {field: 'cStatus', operator: 'eq', value: 'cStatus'}, 
    {field: 'money', operator: 'eq', value: 'money'}
];

alert(myArray.length);

for(var i=0 ; i<myArray.length; i++)
{
    if(myArray[i].value=='money')
        myArray.splice(i);
}

alert(myArray.length);

আপনি underscore লাইব্রেরি ব্যবহার করতে পারেন যা প্রচুর ফাংশন রয়েছে।

Underscore একটি ইউটিলিটি-বেল্ট লাইব্রেরী যা জাভাস্ক্রিপ্টের জন্য কার্যকরী প্রোগ্রামিং সহায়তা প্রদান করে


এখানে jQuery grep ব্যবহার করে অন্য বিকল্প। Grep আপনার ফাংশনের সাথে মেলে এমন আইটেমগুলিকে সরানোর জন্য তৃতীয় পরামিতি হিসাবে true পাস করুন।

users = $.grep(users, function(el, idx) {return el.field == "money"}, true)

আপনি যদি ইতিমধ্যেই jQuery ব্যবহার করছেন তবে কোন শিমের প্রয়োজন নেই, এটি Array.filter ব্যবহার করার বিরোধিতা হিসাবে কার্যকর হতে পারে।


নীচের কিছু মন্তব্যের উপর ভিত্তি করে একটি কী নাম এবং কী মানের উপর ভিত্তি করে একটি বস্তু সরাতে হয়

 var items = [ 
  { "id": 3.1, "name": "test 3.1"}, 
  { "id": 22, "name": "test 3.1" }, 
  { "id": 23, "name": "changed test 23" } 
  ]

    function removeByKey(array, params){
      array.some(function(item, index) {
        return (array[index][params.key] === params.value) ? !!(array.splice(index, 1)) : false;
      });
      return array;
    }

    var removed = removeByKey(items, {
      key: 'id',
      value: 23
    });

    console.log(removed);

var myArray = [
    {field: 'id', operator: 'eq', value: id}, 
    {field: 'cStatus', operator: 'eq', value: cStatus}, 
    {field: 'money', operator: 'eq', value: money}
];
console.log(myArray.length); //3
myArray = $.grep(myArray, function(element, index){return element.field == "money"}, true);
console.log(myArray.length); //2

উপাদান অ্যারে একটি বস্তু। তৃতীয় প্যারামিটার true মানে এমন উপাদানগুলির একটি অ্যারে ফিরিয়ে দেবে যা আপনার ফাংশন লজিককে ব্যর্থ করে, false উপায়ে উপাদানগুলির একটি অ্যারে ফিরিয়ে দেবে যা আপনার ফাংশন লজিককে ব্যর্থ করে।





properties