簡體   English   中英

如何創建數組並在 Node.js 中傳遞它們

[英]How to create array and pass them in Node.js

我想傳遞獲取的數據,如以下array

 { category: ['Animals','Vehicles']

   difficulty: ['easy','medium']
 }

我嘗試了類似以下的方法, getCategory.push(quiz.getCategory(2)),

但是我遇到了以下錯誤。

Unexpected token.

我很困惑如何傳遞數組之類的數據。

如果有人有意見,請告訴我。

謝謝

const API_KEY="https://opentdb.com/api.php?amount=10&type=multiple";
const fetch = require('node-fetch');
const Quiz=require("../public/javascripts/quiz");


module.exports={
    getQuiz:function(resp){
      fetch(API_KEY)
      .then(response => response.json())
      .then(json => { const quiz = new Quiz(json); 
            resp.send({
                getCategory:quiz.getCategory(1),
                getCategory.push(quiz.getCategory(2)),
                getDifficulty:quiz.getDifficulty(1),
                getDifficulty.push(quiz.getDifficulty(2))
  
            });
        });
    }
};

我的 class 緊隨其后。

class Quiz {
    constructor(quizData){
        this._quizzes = quizData.results;
        this._correctAnswersNum = 0;
    }
    
    getNumOfQuiz(){
        return this._quizzes.length;
    }
    
    getCategory(index){
        return this._quizzes[index-1].category;
    }
    getDifficulty(index){
        return this._quizzes[index-1].difficulty;
    }
}
module.exports = Quiz;

fetch(API_KEY)返回如下內容。

 results: 
   [ { category: 'Animals',
       type: 'multiple',
       difficulty: 'easy',
       question: 'What do you call a baby bat?',
       correct_answer: 'Pup',
       incorrect_answers: [Array] },
     { category: 'Vehicles',
       type: 'multiple',
       difficulty: 'medium',
       question: 'Which supercar company is from Sweden?',
       correct_answer: 'Koenigsegg',
       incorrect_answers: [Array] },
     { category: 'Entertainment: Board Games',
       type: 'multiple',
       difficulty: 'hard',
       question: 'Which board game was first released on February 6th, 1935?',
       correct_answer: 'Monopoly',
       incorrect_answers: [Array] }]

我沒有看到在這個實現中我們到底需要如何使用 Class 方法。但是我們可以如下 go 。

這是我們收到的數據

const data = [ { category: 'Animals',
       type: 'multiple',
       difficulty: 'easy',
       question: 'What do you call a baby bat?',
       correct_answer: 'Pup',
       incorrect_answers: [Array] },
     { category: 'Vehicles',
       type: 'multiple',
       difficulty: 'medium',
       question: 'Which supercar company is from Sweden?',
       correct_answer: 'Koenigsegg',
       incorrect_answers: [Array] },
     { category: 'Entertainment: Board Games',
       type: 'multiple',
       difficulty: 'hard',
       question: 'Which board game was first released on February 6th, 1935?',
       correct_answer: 'Monopoly',
       incorrect_answers: [Array] }];

我們要作為響應發送的數據結構。

const finalResponse = {
  category : [],
  difficulty : [] 
}

循環實際數據,並在finalResponse中收集數據。 可能是如果您已經知道數據index ,則可以使用Class問題中提到的。 現在我們已經使用data數組原型方法forEach來循環每個數據,如下所示。

data.forEach(function({category, difficulty}){
    finalResponse.category.push(category);
    finalResponse.category.push(difficulty);
})

最后將收集到的數據作為響應發送

res.send(finalResponse);

答案1(快速修復):

const API_KEY="https://opentdb.com/api.php?amount=10&type=multiple";
const fetch = require('node-fetch');
const Quiz=require("../public/javascripts/quiz");


module.exports={
    getQuiz:function(resp){
      fetch(API_KEY)
      .then(response => response.json())
      .then(json => { const quiz = new Quiz(json); 
            resp.send({
                getCategory:[quiz.getCategory(1), quiz.getCategory(2)],
                getDifficulty:[quiz.getDifficulty(1),quiz.getDifficulty(2)]
  
            });
        });
    }
};

答案2(正確方法):

  • class 測驗:介紹獲取數組的新方法 | getPropArray() // 我不擅長命名
class Quiz {
    constructor(quizData){
        this._quizzes = quizData.results;
        this._correctAnswersNum = 0;
    }
    
    getNumOfQuiz(){
        return this._quizzes.length;
    }
    
    getCategory(index){
        return this._quizzes[index-1].category;
    }
    getDifficulty(index){
        return this._quizzes[index-1].difficulty;
    }
    /**
    * get array of prop (property) 
    * @param {string} prop
    * @param {number} start
    * @param {number} end
    */
    getPropArray(prop, start=1, end=this._quizzes.length){
        let res = [];
        for (let i=start-1; i<=end-1; i++){
             res.push(this._quizzes[i][prop]);
        }
        return res;
    }
}
module.exports = Quiz;

現在您可以根據需要在響應中添加新屬性,idk 您想使用什么邏輯來選擇 result[index] 但在這里^您可以應用范圍。

const API_KEY="https://opentdb.com/api.php?amount=10&type=multiple";
const fetch = require('node-fetch');
const Quiz=require("../public/javascripts/quiz");


module.exports={
    getQuiz:function(resp){
      fetch(API_KEY)
      .then(response => response.json())
      .then(json => { const quiz = new Quiz(json); 
            resp.send({
                getCategory: quiz.getPropArray('category' ),
                getDifficulty: quiz.getPropArray('difficulty')
            });
        });
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM