javascript - $.each 内的 $.each 返回最后一个值

标签 javascript arrays object each

我需要在每个对象内放置一个数组,然后迭代这个最近添加的数组,以将对象的属性放置在对象内数组上的每个实例内。

像这样:

 var answer = [];//with three objects in here
 var alternatives = [{id_alternative : 40},{id_alternative : 47},{id_alternative : 56}]
 $.each(alternatives, function(index, item){

        item.answers = answer;
        $.each(item.answers, function(i, ans){

              ans.alternative = item.id_alternative;

        }

 }

但在结果中我总是得到alternatives[anyindex].answers[anyindex].alternative总是56。我不知道到底发生了什么。

希望得到一些帮助,谢谢!

编辑

“内部三个对象”是指内部包含其他类型数据的对象数组,数组“answer”内的每个对象将包含 Question_name 字符串和 real_answer 整数。

我最终需要的是:

alternatives = [
    {id_alternatives:40,
     answers:[{
         alternative:40,
         question_name: "string",
         real_answer:489},
         {
         alternative:40,
         question_name: "string",
         real_answer:548},
         {
         alternative:40,
         question_name: "string",
         real_answer:40}
     ]},//with several other objects with this structure, but other data

最佳答案

您仅创建一个数组(第一行中的 []),然后共享其引用并在整个代码中修改它。如果您想要不同的数组,则必须单独创建它们。例如,您可以替换

item.answers = answer;

item.answers = answer.slice(0);

这是用于数组克隆的 JavaScript 习惯用法,用于制作数组的副本。如果您要修改其中的元素(正如您所看到的那样;您的示例不完整),这是不够的,因为它将克隆对元素的引用,而不是元素本身,并且您将需要深层复制。使用新对象构造一个新数组可能更容易,而不是在那一行。

关于javascript - $.each 内的 $.each 返回最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29981605/

相关文章:

java - 为什么我无法将 int 类型值添加到数组中

java - 将类的参数添加到数组中

javascript - 创建对象的正确方法

javascript - 什么是 Assets ,什么是 bundle

javascript - 在使用 RSA-OAEP 在 JavaScript 中加密的 C# 中解密数据时出现 OAEP 填充错误

javascript - 如何从 JavaScript 闭包中紧凑地返回对象?

javascript - 清理稍后将出现在 HTML 中的输入

c++ - SWIG 无法正确转换 typedef 类型

Java "global"对象

javascript - 无法获取对象中的值(Javascript)