मुझे अपनी जेएस फ़ाइल में जेसन से यादृच्छिक संदेश प्राप्त करने में समस्या है।

const values = Object.values(jsonData) 
/*const randomValue = values[Math.floor(Math.random() * values.length)]*/ 
const randomValue = jsonData.quotes[Math.floor(Math.random() * values.length)]; 
console.log(randomValue.quote);

वह मुझे पहली वस्तु देता है। मैं मुझे एक यादृच्छिक देना चाहता हूं, पहले नहीं।

0
Mohammed Zaky 11 जुलाई 2021, 14:22

4 जवाब

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

आप एक उचित समाधान के बहुत करीब थे। अगर आपने यह const values = jsonData.quotes किया तो आपका कोड काम करेगा।

समस्या यह है कि आपने यादृच्छिक सूचकांक गणना में jsonData.quotes.length के बजाय values.length का उपयोग किया।

const quotes = jsonData.quotes;
const randomIndex = Math.floor(Math.random() * quotes.length);
const randomQuote = quotes[randomIndex];

console.log(randomQuote);

पीएस। अधिक वर्णनात्मक चर नामों का उपयोग करें, और बग को पेश करना कठिन होगा। values बहुत अस्पष्ट नाम है।

0
Yuriy Yakym 11 जुलाई 2021, 11:56

ऐसा लगता है कि आप अपने ऑब्जेक्ट के quotes सरणी से एक यादृच्छिक तत्व प्राप्त करने का प्रयास कर रहे हैं, लेकिन आप केवल jsonData से Object.values प्राप्त कर रहे हैं। आपको इसके बजाय jsonData.quotes के मान प्राप्त करने होंगे।

const jsonData = { quotes: [{ quote: 1 }, { quote: 2 }, { quote: 3 }] };

const values = Object.values(jsonData.quotes); 

const randomValue = jsonData.quotes[Math.floor(Math.random() * values.length)]; 

console.log(randomValue.quote);
0
Andy 11 जुलाई 2021, 11:28

समस्या Math.random() * jsonData.length है। समाधान बहुत आसान है मैं सभी मूल्यों के साथ कई नहीं करता

Math.random() * jsonData.quotes.length
0
Mohammed Zaky 11 जुलाई 2021, 11:56

आपको अपने JSON के अंदर एक मुख्य सरणी की आवश्यकता है और इसके अंदर अपना डेटा सहेजें, जैसे:

var jsonContent = {
        "main": [
            {
                "id": "111",
                "title": "post title 111",
                "desc": "This is a test desc 111"
            },
            {
                "id": "222",
                "title": "post title 222",
                "desc": "This is a test desc 222"
            },
            {
                "id": "333",
                "title": "post title 333",
                "desc": "This is a test desc 333"
            }
        ]
    }

    var random = jsonContent.featured[Math.floor(Math.random() * jsonContent.main.length)];
    console.log(random)

अपने JSON ऑब्जेक्ट्स को इसके साथ बदलें:

{
    "id": "333",
    "title": "post title 333",
    "desc": "This is a test desc 333"
}

"main" के अंदर

मुझे आशा है कि यह आपकी मदद करेगा।

0
Yazdan 11 जुलाई 2021, 11:34