मैं Google शीट्स में एक कस्टम फ़ंक्शन बना रहा हूं जो किसी दिए गए सरणी में दिए गए सरणी में सभी आइटम्स की घटनाओं की संख्या की गणना करता है।

जिस तरह से मुझे Google शीट के कार्यों को समझने के लिए दिया गया है, वह यह है कि आपके द्वारा दी जाने वाली सीमा कोशिकाओं में वस्तुओं की द्वि-आयामी सरणी में बदल जाती है। तो रेंज A4:B5 को फंक्शन में ट्रांसमिट किया जाएगा:

[[the contents of A4, the contents of B4], 
[the contents of A5, the contents of B5]

अगला इनपुट उन सेल में जांच के लिए आइटम की एक सूची है। मुझे ऑनलाइन से जो मिला, उसमें सरणियाँ दी गई हैं इन {} जैसे कोष्ठकों का उपयोग करके Google पत्रक में। मेरे द्वारा बनाया गया फ़ंक्शन नीचे दिया गया है। मैंने पहले कभी जावास्क्रिप्ट का उपयोग नहीं किया है, लेकिन मैं अन्य भाषाओं को जानता हूं और मैंने अभी गुगल किया है कि लूप के लिए कैसे उपयोग करें और यदि फ़ंक्शन बनाने के लिए कथन हैं, तो मुझे यकीन है कि त्रुटि कुछ सरल के कारण है जिसे मैं नहीं जानता या याद नहीं करता हूं।

function count_if_in_set(range, given_list) {
  let counter = 0;
  for (dim_1 of range) {
    for (dim_2 of dim_1) {
      for (item of given_list) {
        if (item == dim_2) {
          counter += 1
        }
      }
    }
  }
  return counter
}

जब मैं निम्नलिखित इनपुट के साथ Google शीट में इस फ़ंक्शन का उपयोग करने का प्रयास करता हूं: =count_if_in_set(Z30:Z33, {1}), मुझे निम्न त्रुटि प्राप्त होती है: TypeError: given_list is not iterable (line 5).

Z30 से Z33 तक की कोशिकाओं की सामग्री पूर्णांक 1, 2, 3, 3 हैं, जिन्हें फ़ंक्शन को निम्नलिखित 2-आयामी सरणी के रूप में दिया जाना चाहिए: [[1], [2], [3], [3]]

समस्या यह है कि सूची [1] चलने योग्य नहीं है। मेरे पास 2 परिकल्पनाएं हैं कि ऐसा क्यों है:

  1. मैंने कुछ गलत कोड किया क्योंकि मैं जावास्क्रिप्ट के लिए बहुत नया हूँ
  2. इनपुट {1} को किसी सूची में प्रेषित नहीं किया जाता है जब Google शीट इसे फ़ंक्शन को देता है

यह जांचने के लिए कि क्या यह पूर्व था, मैंने अपने कार्य के सभी पहलुओं को देखा। मैंने पहली बार जाँच की कि क्या आपको उस प्रकार के चर की घोषणा करनी है जब आपने फ़ंक्शन बनाया था, लेकिन जब मैंने इसे देखा तो मैंने जो देखा, उसके अनुसार आप नहीं करते हैं। फिर मैंने अपने सभी for (a of b) को for (let a of b) में बदल दिया, लेकिन इससे कोई फायदा नहीं हुआ और उसके बाद मैं फंस गया।

कोड को एक सरणी देने में समस्या होने की स्थिति में इसे हल करने का प्रयास करने के लिए, मैंने अपने इनपुट को =count_if_in_set(Z30:Z33, {1}) से =count_if_in_set(Z30:Z33, [1]) में बदलने की कोशिश की, लेकिन इसने एक सूत्र पार्स त्रुटि को फेंक दिया, इसलिए मुझे पता था कि था यह नहीं है, और मैंने इनपुट को =count_if_in_set(Z30:Z33, (1)) में बदलने की कोशिश की लेकिन उसने वही त्रुटि लौटा दी। और उसके बाद मैं फंस गया था और मेरे पास और कोई विचार नहीं था।

0
Maxijazz 11 जुलाई 2021, 18:13

1 उत्तर

उस फ़ंक्शन को काम करने का तरीका ढूंढने वाले किसी भी व्यक्ति के लिए:

मैंने वही किया लेकिन इसे थोड़ा बदल दिया, इसलिए दूसरा इनपुट कोशिकाओं की एक श्रृंखला थी जिसमें वह सीमा थी जिसमें मैं खोजना चाहता था

0
Maxijazz 11 जुलाई 2021, 18:22