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);