জাভাস্ক্রিপ্ট অবজেক্ট ফিল্টার অ্যারে


87

আমার কাছে অবজেক্টগুলির একটি অ্যারে রয়েছে এবং আমি এটি সন্ধান করার সর্বোত্তম উপায়টি অবাক করছি। নীচের উদাহরণ দেওয়া হল আমি কীভাবে সন্ধান করতে পারি name = "Joe"এবং age < 30? JQuery এর সাথে সাহায্য করতে পারে এমন কিছু আছে কি আমাকে নিজেরাই এই অনুসন্ধানকে জোর করে চাপিয়ে দিতে হবে?

var names = new Array();

var object = { name : "Joe", age:20, email: "joe@hotmail.com"};
names.push(object);

object = { name : "Mike", age:50, email: "mike@hotmail.com"};
names.push(object);

object = { name : "Joe", age:45, email: "mike@hotmail.com"};
names.push(object);

অনুসন্ধান দ্বারা আপনি কি ফিল্টার বোঝাতে চান?
জোড়গুপ্রা

অনুসন্ধান! = ফিল্টার আপনি কোনটি চান?
টিজে ক্রাউডার

উত্তর:



78

আপনি [].filterপদ্ধতিটি দিয়ে খুব সহজে এটি করতে পারেন :

var filterednames = names.filter(function(obj) {
    return (obj.name === "Joe") && (obj.age < 30);
});

আপনাকে ব্রাউজারগুলির জন্য একটি শিম যুক্ত করতে হবে যা [].filterপদ্ধতিটি সমর্থন করে না : এই এমডিএন পৃষ্ঠাটি এমন কোড দেয়।


আমি লিঙ্কযুক্ত এমডিএন পৃষ্ঠায় পলিফিলটি একবার দেখার পরামর্শ দিচ্ছি, সম্ভবত কিছু মজাদার কোড পড়ার এবং সম্ভবত নতুন কিছু শেখার জন্য।
অরেলিও

10

আপনি ম্যাচের উপাদানগুলির একটি উপসেট থেকে উপাদানগুলি ফেরত দিতে jQuery.filter () ফাংশনটি ব্যবহার করতে পারেন।

var names = [
    { name : "Joe", age:20, email: "joe@hotmail.com"},
    { name : "Mike", age:50, email: "mike@hotmail.com"},
    { name : "Joe", age:45, email: "mike@hotmail.com"}
   ];
   
   
var filteredNames = $(names).filter(function( idx ) {
    return names[idx].name === "Joe" && names[idx].age < 30;
}); 

$(filteredNames).each(function(){
     $('#output').append(this.name);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="output"/>


9

var nameList = [
{name:'x', age:20, email:'x@email.com'},
{name:'y', age:60, email:'y@email.com'},
{name:'Joe', age:22, email:'joe@email.com'},
{name:'Abc', age:40, email:'abc@email.com'}
];

var filteredValue = nameList.filter(function (item) {
      return item.name == "Joe" && item.age < 30;
});

//To See Output Result as Array
console.log(JSON.stringify(filteredValue));

আপনি কেবল জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন :)


4

যারা কোনও কী ব্যবহার করে একটি অ্যারে অবজেক্ট থেকে ফিল্টার করতে চান তাদের জন্য:

function filterItems(items, searchVal) {
  return items.filter((item) => Object.values(item).includes(searchVal));
}
let data = [
  { "name": "apple", "type": "fruit", "id": 123234 },
  { "name": "cat", "type": "animal", "id": 98989 },
  { "name": "something", "type": "other", "id": 656565 }]


console.log("Filtered by name: ", filterItems(data, "apple"));
console.log("Filtered by type: ", filterItems(data, "animal"));
console.log("Filtered by id: ", filterItems(data, 656565));

JSON অবজেক্টগুলির একটি অ্যারে থেকে ফিল্টার করুন: **


2

var names = [{
        name: "Joe",
        age: 20,
        email: "joe@hotmail.com"
    },
    {
        name: "Mike",
        age: 50,
        email: "mike@hotmail.com"
    },
    {
        name: "Joe",
        age: 45,
        email: "mike@hotmail.com"
    }
];
const res = _.filter(names, (name) => {
    return name.name == "Joe" && name.age < 30;

});
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js"></script>


1

এত তাড়াতাড়ি প্রশ্ন। আপনার যদি দুটি বস্তুর অ্যারে থাকে এবং আপনি এই অবজেক্ট অ্যারেগুলিকে 'সারিবদ্ধ' করতে চান যাতে আপনি নিশ্চিত করতে পারেন যে প্রতিটি অ্যারের অবজেক্টগুলি অন্য অ্যারের মতো ক্রমে রয়েছে? যদি আপনি না জানেন যে অ্যারের অভ্যন্তরের কোনও বস্তুতে কী কী আছে এবং তার মূল্যবোধ থাকে ... তবে তারা এমনকি কোন আদেশেও থাকবে?

তাই আপনি যদি আপনার জন্য 'ওয়াইল্ডকার্ড এক্সপ্রেশন' প্রয়োজন [].filter, [].mapইত্যাদি আপনি কিভাবে একটি ওয়াইল্ড কার্ড প্রকাশের পেতে পারি?

var jux = (function(){
    'use strict';

    function wildExp(obj){
        var keysCrude = Object.keys(obj),
            keysA = ('a["' + keysCrude.join('"], a["') + '"]').split(', '),
            keysB = ('b["' + keysCrude.join('"], b["') + '"]').split(', '),
            keys = [].concat(keysA, keysB)
                .sort(function(a, b){  return a.substring(1, a.length) > b.substring(1, b.length); });
        var exp = keys.join('').split(']b').join('] > b').split(']a').join('] || a');
        return exp;
    }

    return {
        sort: wildExp
    };

})();

var sortKeys = {
    k: 'v',
    key: 'val',
    n: 'p',
    name: 'param'
};
var objArray = [
    {
        k: 'z',
        key: 'g',
        n: 'a',
        name: 'b'
    },
    {
        k: 'y',
        key: 'h',
        n: 'b',
        name: 't'
    },
    {
        k: 'x',
        key: 'o',
        n: 'a',
        name: 'c'
    }
];
var exp = jux.sort(sortKeys);

console.log('@juxSort Expression:', exp);
console.log('@juxSort:', objArray.sort(function(a, b){
    return eval(exp);
}));

আপনি প্রতিটি বস্তুর জন্য প্রতিটি কীগুলির জন্য আরও ভাল সম্মিলিত অভিব্যক্তি তৈরি করতে প্রতিটি বস্তুর পুনরাবৃত্তির জন্য এই ফাংশনটি ব্যবহার করতে পারেন এবং তারপরে আপনার অ্যারেটি ফিল্টার করুন।

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

আশাকরি এটা সাহায্য করবে! শুভ কোডিং :)


1

সর্বাধিক সরল ও পঠনীয় পদ্ধতি হ'ল দেশীয় জাভাস্ক্রিপ্ট ফিল্টার পদ্ধতি ব্যবহার।

নেটিভ জাভা স্ক্রিপ্ট ফিল্টার অ্যারে উপাদানগুলিকে ফিল্টার করার ক্ষেত্রে একটি ঘোষণামূলক পদ্ধতি গ্রহণ করে। যেহেতু এটি অ্যারে.প্রোটোটাইপে সংজ্ঞায়িত একটি পদ্ধতি, তাই এটি সরবরাহ করা অ্যারেতে পুনরাবৃত্তি করে এবং এটিতে কলব্যাকের আবেদন করে। এই কলব্যাকটি, যা আমাদের ফিল্টারিং ফাংশন হিসাবে কাজ করে, তিনটি পরামিতি নেয়:

element - অ্যারের বর্তমান আইটেমটি পুনরাবৃত্তি হচ্ছে

index - অ্যারেতে বর্তমান উপাদানটির সূচক বা অবস্থান যা পুনরাবৃত্তি হচ্ছে

array- ফিল্টার পদ্ধতিটি প্রয়োগ করা হয়েছিল তার মূল অ্যারে আসুন একটি উদাহরণে এই ফিল্টার পদ্ধতিটি ব্যবহার করুন। নোট করুন যে ফিল্টারটি কোনও ধরণের অ্যারেতে প্রয়োগ করা যেতে পারে। এই উদাহরণে, আমরা কোনও অবজেক্টের উপর ভিত্তি করে অবজেক্টগুলির একটি অ্যারে ফিল্টার করতে যাচ্ছি।

বস্তুর বৈশিষ্ট্যের উপর ভিত্তি করে অবজেক্টগুলির একটি অ্যারে ফিল্টার করার উদাহরণ এটির মতো দেখতে পারে:

// Please do not hate me for bashing on pizza and burgers.
// and FYI, I totally made up the healthMetric param :)
let foods = [
  { type: "pizza", healthMetric: 25 },
  { type: "burger", healthMetric: 10 },
  { type: "salad", healthMetric: 60 },
  { type: "apple", healthMetric: 82 }
];
let isHealthy = food => food.healthMetric >= 50;

const result = foods.filter(isHealthy);

console.log(result.map(food => food.type));
// Result: ['salad', 'apple']

ফাংশনগুলিতে অ্যারেগুলিকে ফিল্টারিং সম্পর্কে আরও জানতে এবং আপনি নিজের ফিল্টারিং তৈরি করতে এই নিবন্ধটি দেখুন: https://medium.com/better-programming/build-your-own-filter-e88ba0dcbfae

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