मैं एक सरणी फ़िल्टर करने की कोशिश कर रहा हूं लेकिन अपेक्षित समाधान पर नहीं पहुंच रहा हूं। क्या कोई कृपया मदद कर सकता है। इस सरणी में मुझे फ़िल्टर करना होगा यदि from.organization_details.type 'SELLER_USER' है और to.type मान 'OPERATOR' है। साथ ही अगर from.organization_details.type == 'OPERATOR_USER' और to[0].type value 'SHOP' है

[
    {
        "body": "Could you please elaborate on the discount",
        "from": {
            "display_name": "vandhana jayaprakash",
            "organization_details": {
                "display_name": "vandhana jayaprakash",
                "id": "2211",
                "type": "CUSTOMER"
            },
            "type": "CUSTOMER_USER"
        },
        "to": [
            {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            }
        ]
    },
    {
        "body": "for testing purpose",
        "from": {
            "display_name": "vandhana jayaprakash",
            "organization_details": {
                "display_name": "vandhana jayaprakash",
                "id": "2211",
                "type": "CUSTOMER"
            },
            "type": "CUSTOMER_USER"
        },
        "to": [
            {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            },
            {
                "display_name": "Operator",
                "type": "OPERATOR"
            }
        ]
    },
    {
        "body": "i need to know about warranty ",
        "from": {
            "display_name": "vandhana jayaprakash",
            "organization_details": {
                "display_name": "vandhana jayaprakash",
                "id": "2211",
                "type": "CUSTOMER"
            },
            "type": "CUSTOMER_USER"
        },
        "to": [
            {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            }
        ]
    },
    {
        "body": "this is a test messgae from seller on dec 17 21",
        "from": {
            "display_name": "taufiqpainter@gmail.com",
            "organization_details": {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            },
            "type": "SHOP_USER"
        },
        "to": [
            {
                "display_name": "vandhana jayaprakash",
                "id": "2211",
                "type": "CUSTOMER"
            }
        ]
    },
    {
        "body": "hi there",
        "from": {
            "display_name": "Operator",
            "organization_details": {
                "display_name": "Operator",
                "type": "OPERATOR"
            },
            "type": "OPERATOR_USER"
        },
        "to": [
            {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            },
            {
                "display_name": "vandhana jayaprakash",
                "id": "2211",
                "type": "CUSTOMER"
            }
        ]
    },
    {
        "body": "hello this is a test messsage on jan 5 2022",
        "from": {
            "display_name": "vandhana jayaprakash",
            "organization_details": {
                "display_name": "vandhana jayaprakash",
                "id": "2211",
                "type": "CUSTOMER"
            },
            "type": "CUSTOMER_USER"
        },
        "to": [
            {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            },
            {
                "display_name": "Operator",
                "type": "OPERATOR"
            }
        ]
    },
    {
        "body": "this is a message sent to operator ",
        "from": {
            "display_name": "taufiqpainter@gmail.com",
            "organization_details": {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            },
            "type": "SHOP_USER"
        },
        "to": [
            {
                "display_name": "Operator",
                "type": "OPERATOR"
            }
        ]
    },
    {
        "body": "this is a msg from operator to seller ",
        "from": {
            "display_name": "Operator",
            "organization_details": {
                "display_name": "Operator",
                "type": "OPERATOR"
            },
            "type": "OPERATOR_USER"
        },
        "to": [
            {
                "display_name": "Taufiq Live Store",
                "id": "2001",
                "type": "SHOP"
            }
        ]
    }
]
मैंने नीचे दिए गए कोड की कोशिश की (कृपया बेला लिंक देखें) लेकिन यह अपेक्षा के अनुरूप काम नहीं कर रहा है। यह सरणी प्रविष्टि को समाप्त करता है यदि इसमें to.type == 'ग्राहक' शामिल है। मैं अपनी सरणी में केवल अंतिम दो प्रविष्टियों को समाप्त करना चाहता हूं। अग्रिम में धन्यवाद

https://jsfiddle.net/4m9kgfpv/

2
vandu 6 जिंदा 2022, 10:13
to एक सरणी है, कोई to.type नहीं है। क्या आप और भी वर्णन कर सकते हैं कि क्या फ़िल्टर किया जाना चाहिए
 – 
Majed Badawi
6 जिंदा 2022, 10:30
हाय @MajedBadawi मुझे केवल उन प्रविष्टियों को हटाने की आवश्यकता है जो विक्रेता और ऑपरेटर के बीच हैं। मुझे उन सभी प्रविष्टियों को संरक्षित करने की आवश्यकता है जिनमें ग्राहक हैं।
 – 
vandu
6 जिंदा 2022, 10:36
to के लिए, आप केवल पहले तत्व की जांच करना चाहते हैं या यदि कोई तत्व मेल खाता है? तो आप रिकॉर्ड रखना चाहते हैं जहां from.organization_details.type CUSTOMER है या जहां to में एक तत्व है जहां type CUSTOMER है?
 – 
Majed Badawi
6 जिंदा 2022, 10:44
मुझे यह जांचने की ज़रूरत है कि क्या कोई तत्व मैच करता है .. यदि ऑब्जेक्ट से या ऑब्जेक्ट में है तो उसके पास 'क्यूसोटमर' है। तो मुझे संरक्षित करने की जरूरत है।
 – 
vandu
6 जिंदा 2022, 10:46

3 जवाब

सबसे बढ़िया उत्तर

Array#filter का इस्तेमाल करना , सरणी पर पुनरावृति करें और तत्व रखें यदि:

from.organization_details.type CUSTOMER है

या

to में एक तत्व है जहां type CUSTOMER है (Array#some)

const conferenceDays = [
  {
    "body": "Could you please elaborate on the discount",
    "from": {
      "display_name": "vandhana jayaprakash",
      "organization_details": { "display_name": "vandhana jayaprakash", "id": "2211", "type": "CUSTOMER" },
      "type": "CUSTOMER_USER"
    },
    "to": [
      { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" }
    ]
  },
  {
    "body": "for testing purpose",
    "from": {
      "display_name": "vandhana jayaprakash",
      "organization_details": { "display_name": "vandhana jayaprakash", "id": "2211", "type": "CUSTOMER"},
      "type": "CUSTOMER_USER"
    },
    "to": [
      { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" },
      { "display_name": "Operator", "type": "OPERATOR" }
    ]
  },
  {
    "body": "i need to know about warranty ",
    "from": {
      "display_name": "vandhana jayaprakash",
      "organization_details": { "display_name": "vandhana jayaprakash", "id": "2211", "type": "CUSTOMER" },
      "type": "CUSTOMER_USER"
    },
    "to": [
      { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" }
    ]
  },
  {
    "body": "this is a test messgae from seller on dec 17 21",
    "from": {
      "display_name": "taufiqpainter@gmail.com",
      "organization_details": { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" },
      "type": "SHOP_USER"
    },
    "to": [
      { "display_name": "vandhana jayaprakash", "id": "2211", "type": "CUSTOMER" }
    ]
  },
  {
    "body": "hi there",
    "from": {
      "display_name": "Operator",
      "organization_details": { "display_name": "Operator", "type": "OPERATOR" },
      "type": "OPERATOR_USER"
    },
    "to": [
      { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" },
      { "display_name": "vandhana jayaprakash", "id": "2211", "type": "CUSTOMER" }
    ]
  },
  {
    "body": "hello this is a test messsage on jan 5 2022",
    "from": {
      "display_name": "vandhana jayaprakash",
      "organization_details": { "display_name": "vandhana jayaprakash", "id": "2211", "type": "CUSTOMER" },
      "type": "CUSTOMER_USER"
    },
    "to": [
      { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" },
      { "display_name": "Operator", "type": "OPERATOR" }
    ]
  },
  {
    "body": "this is a message sent to operator ",
    "from": {
      "display_name": "taufiqpainter@gmail.com",
      "organization_details": { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" },
      "type": "SHOP_USER"
    },
    "to": [
      { "display_name": "Operator", "type": "OPERATOR" }
    ]
  },
  {
    "body": "this is a msg from operator to seller ",
    "from": {
      "display_name": "Operator",
      "organization_details": { "display_name": "Operator", "type": "OPERATOR" },
      "type": "OPERATOR_USER"
    },
    "to": [
      { "display_name": "Taufiq Live Store", "id": "2001", "type": "SHOP" }
    ]
  }
];

const arr = conferenceDays.filter(({ from = {}, to = [] }) =>
  (from.organization_details.type === 'CUSTOMER') || 
  (to.some(({ type }) => type === 'CUSTOMER'))
);

console.log(arr);
1
Majed Badawi 6 जिंदा 2022, 10:50
1
यह वही है जो मैं हासिल करना चाहता था। बहुत - बहुत धन्यवाद
 – 
vandu
6 जिंदा 2022, 10:59

सरणियों के लिए फ़िल्टर नामक फ़ंक्शन है जो ठीक वही करता है जो आप चाहते हैं, आप इसके बारे में पढ़ सकते हैं यहां, लेकिन मैं यहां एक उदाहरण भी लिखता हूं।

कल्पना कीजिए कि हमारे पास और सरणी है और हम उन सभी मानों को फ़िल्टर करना चाहते हैं जो 2 से कम या बराबर हैं, हमें array.filter कॉलबैक में ऐसी स्थिति बनानी चाहिए जो केवल 2 से अधिक मान सही लौटाए। आपके मामले में आपको अपनी इच्छित चीज़ों से मेल खाने के लिए केवल संपत्तियों की जांच करने की आवश्यकता है, आशा है कि इससे मदद मिली।

    let array = [1, 2, 3, 4, 5];
    console.log(array.filter(element => {
        return element > 2;
    }));
0
outlandish 6 जिंदा 2022, 10:21
जानकारी के लिए आभार। क्या आप कृपया प्रदान की गई सरणी के साथ मेरी मदद कर सकते हैं।
 – 
vandu
6 जिंदा 2022, 10:24

यहाँ आपका समाधान है। यह काम करेगा यदि आपके से सरणी में केवल 1 तत्व है

const arr = [
    {
        body: "Could you please elaborate on the discount",
        from: {
            display_name: "vandhana jayaprakash",
            organization_details: {
                display_name: "vandhana jayaprakash",
                id: "2211",
                type: "SELLER_USER",
            },
            type: "CUSTOMER_USER",
        },
        to: [
            {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "OPERATOR",
            },
        ],
    },
    {
        body: "for testing purpose",
        from: {
            display_name: "vandhana jayaprakash",
            organization_details: {
                display_name: "vandhana jayaprakash",
                id: "2211",
                type: "CUSTOMER",
            },
            type: "CUSTOMER_USER",
        },
        to: [
            {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
            {
                display_name: "Operator",
                type: "OPERATOR",
            },
        ],
    },
    {
        body: "i need to know about warranty ",
        from: {
            display_name: "vandhana jayaprakash",
            organization_details: {
                display_name: "vandhana jayaprakash",
                id: "2211",
                type: "CUSTOMER",
            },
            type: "CUSTOMER_USER",
        },
        to: [
            {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
        ],
    },
    {
        body: "this is a test messgae from seller on dec 17 21",
        from: {
            display_name: "taufiqpainter@gmail.com",
            organization_details: {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
            type: "SHOP_USER",
        },
        to: [
            {
                display_name: "vandhana jayaprakash",
                id: "2211",
                type: "CUSTOMER",
            },
        ],
    },
    {
        body: "hi there",
        from: {
            display_name: "Operator",
            organization_details: {
                display_name: "Operator",
                type: "OPERATOR",
            },
            type: "OPERATOR_USER",
        },
        to: [
            {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
            {
                display_name: "vandhana jayaprakash",
                id: "2211",
                type: "CUSTOMER",
            },
        ],
    },
    {
        body: "hello this is a test messsage on jan 5 2022",
        from: {
            display_name: "vandhana jayaprakash",
            organization_details: {
                display_name: "vandhana jayaprakash",
                id: "2211",
                type: "CUSTOMER",
            },
            type: "CUSTOMER_USER",
        },
        to: [
            {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
            {
                display_name: "Operator",
                type: "OPERATOR",
            },
        ],
    },
    {
        body: "this is a message sent to operator ",
        from: {
            display_name: "taufiqpainter@gmail.com",
            organization_details: {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
            type: "SHOP_USER",
        },
        to: [
            {
                display_name: "Operator",
                type: "OPERATOR",
            },
        ],
    },
    {
        body: "this is a msg from operator to seller ",
        from: {
            display_name: "Operator",
            organization_details: {
                display_name: "Operator",
                type: "OPERATOR",
            },
            type: "OPERATOR_USER",
        },
        to: [
            {
                display_name: "Taufiq Live Store",
                id: "2001",
                type: "SHOP",
            },
        ],
    },
];

// Previous array length
console.log(arr.length);

arr.forEach((value, i) => {
// If the condition is true than remove that value from the array
if (
    (value.from.organization_details.type == "SELLER_USER" &&
        value.to[0].type === "OPERATOR") ||
    (value.from.organization_details.type == "OPERATOR_USER" && value.to[0].type === "SHOP")
) {
    arr.splice(i, 1);
}
});

// Array length after removing data from array
console.log(arr.length);
0
AR. Arif 6 जिंदा 2022, 10:51
BTW, स्थिति उत्पन्न करने के लिए मैंने पहले तत्व from.organization_details.type मान को बदल दिया है क्योंकि कोई SELLER_USER मान नहीं था
 – 
AR. Arif
6 जिंदा 2022, 10:44
नमस्ते @ ar.arif मुझे केवल उन प्रविष्टियों को हटाने की आवश्यकता है जो विक्रेता और ऑपरेटर के बीच हैं। मुझे उन सभी प्रविष्टियों को संरक्षित करने की आवश्यकता है जिनमें ग्राहक हैं।
 – 
vandu
6 जिंदा 2022, 10:44
ठीक है, तो कोड थोड़ा अलग होगा मुझे इस कोड को बदलने दें। क्योंकि यह कोड फ़िल्टर कर रहा है हटा नहीं रहा है
 – 
AR. Arif
6 जिंदा 2022, 10:46
1
अब यह कोड प्रविष्टियों को हटा देगा यदि वे शर्त से मेल खाते हैं। पहले और बाद में सरणी की लंबाई की जाँच करें। आशा है इससे आपकी मदद होगी
 – 
AR. Arif
6 जिंदा 2022, 10:52
यह कोड विक्रेता और ऑपरेटर के बीच उन प्रविष्टियों को दे रहा है। लेकिन मैं केवल वही चाहता हूं जिसमें ग्राहक शामिल है, मुझे विक्रेता और ऑपरेटर के बीच प्रवेश को खत्म करने की जरूरत है
 – 
vandu
6 जिंदा 2022, 10:58