Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在自定义对象数组中按属性查找条目_Javascript_Arrays_Angular_Typescript_Angular2 Services - Fatal编程技术网

Javascript 在自定义对象数组中按属性查找条目

Javascript 在自定义对象数组中按属性查找条目,javascript,arrays,angular,typescript,angular2-services,Javascript,Arrays,Angular,Typescript,Angular2 Services,我正在Angular 2中使用Typescript开发一个应用程序,但遇到了一个问题。我有一个服务,它会收到一系列类似这样的问题 export class Question { constructor(public id: number, public question_text: string, public answers: string[], public user_answe

我正在Angular 2中使用Typescript开发一个应用程序,但遇到了一个问题。我有一个服务,它会收到一系列类似这样的问题

    export class Question {

    constructor(public id: number,
                public question_text: string,
                public answers: string[],
                public user_answer: string = "none") // default to none, update on user input

    {}
}

private questions: Question[] = [
    new Question(0, 
  'How often did you eat a portion of vegetables??', 
  ['Answer A','Answer B', 'Answer C', 'Answer D', 'Answer E', 'Answer F']),
    new Question(1, 
  'How often did you eat a portion of fruit?', 
  ['Answer A','Answer B', 'Answer C', 'Answer D', 'Answer E', 'Answer F']),
然后我有一个按钮,允许用户编辑问题(包括id在内的所有数据)。我的UpdateRequest如下所示:

updateQuestion(questionId: number, newQuestion: Question) {
   //Find question in array
   //Delete this entry
   //Add new question to array
}

我真的很难完成第一个任务:在数组中查找问题。我已经试过与你的一些组合

this.questions.find(question => questionId == id) 
但id在那里是未定义的,我不知道如何才能找到它

问题主要围绕着在id=questionId的questions数组中找到正确的条目


任何帮助都将不胜感激

问题在于问题模型。我已将我的问题模型更改为:

export class Question {

public _id: number;
public _question_text: string;
public _answers: string[];
public _user_answer: string;

constructor(public id: number,
            public question_text: string,
            public answers: string[],
            public user_answer: string = "none") // default to none, update on user input

{
    this._id = id;
    this._question_text = question_text;
    this._answers = answers;
    this._user_answer = user_answer;
}
}
然后是我的服务:

updateQuestion(questionId: number, newQuestion: Question) {
    const questionIndex = this.questions.findIndex(x => x._id == questionId);

好的,但是您是否在项目中的任何地方设置了这个
id
变量?它是
this.questions.find(question=>questionId==question.id)
一个
question
看起来像什么?Jag可能是对的。更新了问题,以便您可以看到问题模型。对不起@PawełLaskowski更新仍然没有帮助。您试图查找的id。是名为
id
的“普通”变量中的值,或者应该是
question.id
像Jag建议的那样(或其他变量)?:)