क्या यह संभव है?

मैं निरंतर वस्तु डेटा बनाना चाहता हूँ।

  • जो मैं चाहता हूं

      return [
          { text: '2', align: 'center', value: '2', sort: false },
          { text: '3', align: 'center', value: '3', sort: false },
          { text: '4', align: 'center', value: '4', sort: false },
          { text: '5', align: 'center', value: '5', sort: false },
          { text: '6', align: 'center', value: '6', sort: false },
          { text: '7', align: 'center', value: '7', sort: false },
          { text: '8', align: 'center', value: '8', sort: false },
      ]
    
  • मैं सोचता हूं

      return [
          () => {
              for (let i = 0; i >= 8; i++) {
                  return {
                      text: i,
                      align: 'center',
                      value: i >= 10 ? `day${i}` : `day0${i}`,
                      sort: false,
                  }
              }
          },
      ]
    

लेकिन यह, ज़ाहिर है, काम नहीं किया। मैं इसे इस तरह कैसे कर सकता हूं?

0
SkoreanAsHol 29 सितंबर 2021, 11:13
2
एक लूप में सरणी बनाएं और फिर इसे वापस करें
 – 
2e0byo
29 सितंबर 2021, 11:16
आपका लूप भी समस्याग्रस्त है: क्या आपका मतलब i <= 35 है? यह एक Vue-विशिष्ट प्रश्न नहीं है, बल्कि एक सामान्य JS है।
 – 
Terry
29 सितंबर 2021, 11:17

3 जवाब

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

आप चाहें तो जितने भी तत्वों की एक खाली सरणी भरकर और फिर map और प्रत्येक खाली वस्तु की अनुक्रमणिका का उपयोग करके ऐसा कर सकते हैं:

const result = new Array(35).fill(0).map((_, i) => ({
  text: i,
  align: 'center',
  value: i >= 10 ? `day${i}` : `day0${i}`,
  sort: false,
}));

console.log(result);
1
Jamiec 29 सितंबर 2021, 11:21

आप एक छोटा सहायक फ़ंक्शन घोषित कर सकते हैं जो पूर्णांकों की दी गई श्रेणी (नक्शे खत्म) के लिए फ़ंक्शन को कॉल करता है, जैसे:

function mapRange(min, max, fn) {
  const out = [];
  for (let i = min; i < max; i++) {
    out.push(fn(i));
  }
  return out;
}

तब आप बस कर सकते हैं

const result = mapRange(0, 35,  (i) => ({
  text: i,
  align: 'center',
  value: i >= 10 ? `day${i}` : `day0${i}`,
  sort: false,
}));

(JSBench परीक्षण के अनुसार, यह जैमीक के new Array().fill().map() मुहावरे का उपयोग करने वाले समान समाधान से लगभग 20% तेज है।)

0
AKX 29 सितंबर 2021, 11:29
... और अतिरिक्त फ़ंक्शन कॉल के बिना (यानी, एक सरणी भरने वाला एक साधारण लूप) यह अभी भी तेज़ होगा। आपका तात्पर्य क्या है? कम से कम कुछ सौ हजार रिकॉर्ड से कम किसी भी सरणी पर हम नैनोसेकंड के अंतर की बात कर रहे हैं
 – 
Jamiec
29 सितंबर 2021, 12:07
कि यदि आप मानचित्र जैसा मुहावरा चाहते हैं, तो यह थोड़ा तेज़ है :)
 – 
AKX
29 सितंबर 2021, 12:07

अन्य उत्तर बहुत लंबे हैं... बेकार... कोशिश करें

[...Array(7)].map((_, i) => ({ text: `${i+2}`, align: 'center', value: `${i+2}`, sort: false }));
-1
mannok 29 सितंबर 2021, 11:29
सबसे छोटा कोड हमेशा पढ़ने में आसान कोड नहीं होता है
 – 
BraveVN
29 सितंबर 2021, 12:13