Javascript $。每个在$内。每个返回最后一个值

Javascript $。每个在$内。每个返回最后一个值,javascript,arrays,object,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.an

我需要在每个对象中放置一个数组,然后遍历这个最近添加的数组,在对象中数组的每个实例中放置对象的属性

像这样:

 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;

        }

 }
但在结果中,我总是得到备选方案[任何索引]。答案[任何索引]。备选方案总是56。我不知道到底发生了什么

我想要一些帮助,谢谢

编辑

“内部三个对象”指的是一个包含其他类型数据的对象数组,数组“answer”中的每个对象将包含question\u name字符串和real\u 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;

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

试试这个

问题是,您对每个备选方案使用相同的声明数组。 所以要解决这个问题,你只需要在循环中移动这个数组,这样每一个选择都会得到它自己的新数组

var-alternatives=[{id\u-alternative:40},{id\u-alternative:47},{id\u-alternative:56}]
$。每个(备选方案、功能(索引、项目){
item.answers=[{alternative:0},{alternative:0},{alternative:0}];//这里有三个对象;
$.each(项目答案、功能(i、ans){
ans.alternative=item.id_alternative;
});
});
console.log(可选)

那么您希望在数组中得到什么类型的结果呢?你能在这里放一个样品吗?或者,如果您可以只编写代码,那就太好了。slice的参数是可选的
.slice()
也可以。@JoeFrambach:是和否。实际上它是可选的,因为大多数实现将
.slice(未定义)
视为
.slice(0)
。理论上,我认为,
.slice()
是(注意,如果
end
未定义,则说明该怎么做,但
start
假定为数字)。还要注意的是,MDN上的
.slice
页面说
(开始,[end])
直到,所以
([start,[end]])
对于不到一岁的孩子来说。
item.answers = answer.slice(0);