Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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,如何循环移动js数组中的键值 for example: {Name:"A", Task:"Task1"}, {Name:"B", Task:"Task2"}, {Name:"C", Task:"Task3"}, to {Name:"A", Task:"Task3"}, {Name:"B&

如何循环移动js数组中的键值

for example:
    {Name:"A", Task:"Task1"},
    {Name:"B", Task:"Task2"},
    {Name:"C", Task:"Task3"},

to
    {Name:"A", Task:"Task3"},
    {Name:"B", Task:"Task1"},
    {Name:"C", Task:"Task2"},
为了进一步澄清,它应该是一个函数,每次运行时“将任务列移动”一次

我尝试过使用以下方法:

ary.push(ary.shift()); 

但是,我不知道有什么方法可以在不移动其他键的情况下将其专门应用于特定键。

映射数组,并使用模运算从循环中的上一项获取任务

与运算符不同,使用负数模的结果将是正余数。之所以需要它,是因为在第一项(
i
为0)
i-1
将是
-1

常数模=(a,n)=>((a%n)+n)%n 常数fn=arr=> arr.map((o,i)=>({ ……哦, 任务:arr[模((i-1),arr.length)]。任务 })) const arr=[{“Name”:“A”,“Task”:“Task1”},{“Name”:“B”,“Task”:“Task2”},{“Name”:“C”,“Task”:“Task3”}] 常数结果=fn(arr)
console.log(结果)您非常接近。您可以将数组分解为两个单独的数组并移动其中一个。请参见以下功能:

const arr=[
{Name:“A”,Task:“Task1”},
{名称:“B”,任务:“任务2”},
{名称:“C”,任务:“Task3”}
];
功能循环(arr){
const names=arr.map(el=>el.Name);
const tasks=arr.map(el=>el.Task);
const el=tasks.pop();
任务。取消移位(el);
返回names.map((字母,i)=>{
返回{
姓名:信,
任务:任务[i]
};
});
}
控制台日志(循环(arr))使用a和您的pop-and-shift概念的方法

const data=[{Name:“A”,Task:“Task1”},{Name:“B”,Task:“Task2”},{Name:“C”,Task:“Task3”}];
函数*taskGen(数据){
//创建可以移动的名称的独立数组
const tasks=data.map(({Task})=>Task);
while(true){
//先移到最后一个位置
tasks.push(tasks.shift());
//返回新映射数组
product data.map((o,i)=>({…o,Task:tasks[i]}))
}
}
常量移位器=taskGen(数据);
for(设i=0;i<6;i++){
const next=shifter.next().value
log(JSON.stringify(下一个))
}

.as console wrapper{max height:100%!important;top:0;}
您提到了循环(如to循环?),但您似乎暗示了转换?是哪一个?到目前为止你试过什么?请您对您迄今为止所做的工作进行更多的澄清和说明。我的意思是,我们已经做了,但为了帮助您,我们需要知道Task1已转移到B,Task2转移到C,Task3转移到a的逻辑是什么…
ari.push()
ari.shift()
操纵数组本身。但听起来好像你想操纵数组中的对象。这意味着您应该循环数组并对每个对象进行转换。这是否回答了您的问题?