Javascript 创建一个新的JSON数组,其中包含来自另一个JSON的特定属性

Javascript 创建一个新的JSON数组,其中包含来自另一个JSON的特定属性,javascript,json,Javascript,Json,我有一个JSON对象数组 "questions": [ { "id": "id", "answer":"answer", "question_type": "q_type", "question": { "header":"Text", "question_image": "link", "answers_list": ["array"], } }, { "id": "id", "ans

我有一个JSON对象数组

  "questions": [
  {
    "id": "id",
    "answer":"answer",
    "question_type": "q_type",
    "question": {
      "header":"Text",
      "question_image": "link", 
      "answers_list": ["array"],
    }
  },
  {
    "id": "id",
    "answer":"answer",
    "question_type": "q_type",
    "question": {
      "header": "Text",
      "question_image": "link",
      "choices_type": "text",
      "choices": ["array"] 
    }
  }
 ]
我想从这个json中提取另一个json,它只包含id和答案,如下所示

"answers": [{"question": question_id, "answer": "text"}]

假设问题id和答案都在questions对象中,则可以按如下方式执行:

var answers = [];

for(var i = 0; i < questions.length; i++)
{
    answers.push({
        question: questions[i].id,
        answer: questions[i].answer
    });
}

这还假设您将问题数组声明为var questions=…

假设问题id和答案都在questions对象中,那么您可以按如下方式执行:

var answers = [];

for(var i = 0; i < questions.length; i++)
{
    answers.push({
        question: questions[i].id,
        answer: questions[i].answer
    });
}

这还假设您将问题数组声明为var questions=…

您可以使用JavaScript映射函数,假设变量q包含您的问题对象:

var out = q.questions.map(function(element) {
              return {"question": element.id, "answer": element.answer};
          });

假设变量q包含您的问题对象,则可以使用JavaScript映射函数:

var out = q.questions.map(function(element) {
              return {"question": element.id, "answer": element.answer};
          });
这是你的json

var json = {"questions": [
  {
    "id": "id",
    "answe":"answer",
    "question_type": "q_type",
    "question": {
      "header":"Text",
      "question_image": "link", 
      "answers_list": ["array"]
    }
  },
  {
    "id": "id",
    "answer":"answer",
    "question_type": "q_type",
    "question": {
      "header": "Text",
      "question_image": "link",
      "choices_type": "text",
      "choices": ["array"] 
    }
  }
 ]}
现在迭代它并创建一个新的Json对象

var answers = []
var question = {}

json.questions.forEach(function(value, index){
    question.id = value.id;
    question.answer = value.answer;
    answers.push(question);

});

var resultJson = {};

resultJson.answers = answers;
这是你的json

var json = {"questions": [
  {
    "id": "id",
    "answe":"answer",
    "question_type": "q_type",
    "question": {
      "header":"Text",
      "question_image": "link", 
      "answers_list": ["array"]
    }
  },
  {
    "id": "id",
    "answer":"answer",
    "question_type": "q_type",
    "question": {
      "header": "Text",
      "question_image": "link",
      "choices_type": "text",
      "choices": ["array"] 
    }
  }
 ]}
现在迭代它并创建一个新的Json对象

var answers = []
var question = {}

json.questions.forEach(function(value, index){
    question.id = value.id;
    question.answer = value.answer;
    answers.push(question);

});

var resultJson = {};

resultJson.answers = answers;
您需要“映射”问题的数据,因为如果要将其解析为JSON,您需要小心循环引用。 但是您只需要指定question.id。所以这没问题

您需要“映射”问题的数据,因为如果要将其解析为JSON,您需要小心循环引用。
但是您只需要指定question.id。所以这没问题。

这会将原始JSON映射到指定的JSON。使用函数

var json={问题:[{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,答案列表:[array]},{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,选项类型:文本,选项:[array]}}}; var keep=[,'questions','id','answer']; var newJson=JSON.stringifyJSON.parsejson,functionk,v{ 变量idx=k&&k==k; 如果idx | | keep.indexOfk>-1{ 如果idx&&typeof v==='object'{ var id=v.id; 删除v.id; v、 问题=身份证; } 返回v; } }; document.body.textContent=newJson;
console.lognewJson 这将把您的原始JSON映射到指定的JSON。使用函数

var json={问题:[{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,答案列表:[array]},{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,选项类型:文本,选项:[array]}}}; var keep=[,'questions','id','answer']; var newJson=JSON.stringifyJSON.parsejson,functionk,v{ 变量idx=k&&k==k; 如果idx | | keep.indexOfk>-1{ 如果idx&&typeof v==='object'{ var id=v.id; 删除v.id; v、 问题=身份证; } 返回v; } }; document.body.textContent=newJson;
console.lognewJson;只是一条评论,但你的答案拼错了。答案:文本是常量吗?不,不是。这只是我想要的一个例子。你试过什么了吗?只是一个评论,但你的答案拼错了。答案:文本是常量吗?不,不是。这只是我想要的一个例子。你试过什么了吗?