Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 - Fatal编程技术网

Javascript根据列表索引更新字典

Javascript根据列表索引更新字典,javascript,arrays,Javascript,Arrays,我有一个列表,其中根据颜色包含一个团队: var team = ["Red","Green","Blue","Yellow","Black","White","Orange"] var from = 0 var to = 5 team.splice(to, 0, team.splice(from, 1)[0]) console.log(team) 在这里,我将团队的索引从0更改为5,这给了我如下输出: [“绿色”、“蓝色”、“黄色”、“黑色”、“白色”、“红色”、“橙色”] 0索引定位为5 现

我有一个列表,其中根据颜色包含一个团队:

var team = ["Red","Green","Blue","Yellow","Black","White","Orange"]
var from = 0
var to = 5
team.splice(to, 0, team.splice(from, 1)[0])
console.log(team)
在这里,我将团队的索引从0更改为5,这给了我如下输出:

[“绿色”、“蓝色”、“黄色”、“黑色”、“白色”、“红色”、“橙色”]

0索引定位为5

现在我有一本字典,里面根据索引列出了队长

var captians=[{'index':0,'captain':'Jack'},{'index':1,'captain':'Daniel'}]

这里
0
团队的索引。
红队的队长是杰克
当队伍的指数发生变化时,我想相应地更换队长

我该怎么做???

试试这个:

captians.map((item)=>
{
   if(item['index'] == to){
        item['index'] = from
   }else if(item['index'] == from){
        item['index'] = to
   }else{
        if(item['index']> from && item['index']<to){
               item['index'] -=1;
        }
   }
})
captians.map((项目)=>
{
如果(项['index']==to){
项目['index']=from
}else if(项['index']==from){
项目['index']=to
}否则{

如果(item['index']>from&&item['index']您可以迭代并移动间隔a位置中的所有索引

var团队=[“红色”、“绿色”、“蓝色”、“黄色”、“黑色”、“白色”、“橙色”],
from=0,
to=5,
船长=[{'index':0,'captain':'Jack'},{'index':1,'captain':'Daniel'}];
团队拼接(到,0,团队拼接(从,1)[0]);
船长。forEach(功能(a){
如果(a.index==from){
a、 指数=至;
返回;
}
if(从from&&a.index to&&a.index>=到&&a.indexconsole.log(captians);
这里需要的是对象而不是数组。以下更改在这种情况下效果最好:
var团队={0:'Red',1:'Green',2:'Blue',3:'Yellow',4:'Black',5:'White',6:'Orange'};
var队长={0:'杰克',1:'丹尼尔',2:'马克',3:'琼',4:'萨拉',5:'明迪',6:'斯图尔特',7:'简'};
函数swapTeam(从,到){
temp=团队[到];
团队[到]=团队[从];
团队[来自]=临时工;
临时=船长[至];
船长[到]=船长[从];
船长[来自]=临时工;
}
swapTeam(0,5);
控制台日志(团队);

console.log(captains);
这里有一些不好的做法。首先,不要根据索引分配队长。给他们团队id。然后将团队数组转换成一个对象数组,比如
[{'id':0,'name':'Red'},{'id':1,'name':'Green'}……]
您的代码用于将0放置到5。但我的团队列表在某种程度上有所不同。当我将0映射到5时,索引1现在将移动到0,依此类推。但在您的情况下,它仍然保持原样,只是将0映射到5,反之亦然