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_Angularjs - Fatal编程技术网

Javascript 我想在多个数组列表中移动元素

Javascript 我想在多个数组列表中移动元素,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有这个数组 0: (5) ["2", "X", "8", "11", "15"] 1: (5) ["1", "5", "X", "X", "14"] 2: (5) ["X", "4", "7", "10", "13"] 3: (5) ["X", "3", "6", "9", "12"] 我想将数字1移动到数字2所在的位置,以便此数组返回 0: (5) ["1", "X", "8", "11", "15"] 1: (5) ["2", "5", "X", "X", "14"] 2: (5) [

我有这个数组

0: (5) ["2", "X", "8", "11", "15"] 
1: (5) ["1", "5", "X", "X", "14"]
2: (5) ["X", "4", "7", "10", "13"]
3: (5) ["X", "3", "6", "9", "12"]
我想将数字1移动到数字2所在的位置,以便此数组返回

0: (5) ["1", "X", "8", "11", "15"]
1: (5) ["2", "5", "X", "X", "14"]
2: (5) ["X", "4", "7", "10", "13"]
3: (5) ["X", "3", "6", "9", "12"]
这个数组集合是一次性返回的,所以我想在它返回后更改位置

我正在使用JavaScript。 谢谢大家

我试过了

Array.prototype.move = function (from, to) {
this.splice(to, 0, this.splice(from, 1)[0]);
};

但这会使整行相互移动,即将数组0移动到数组1,找到外部数组索引和内部数组索引,然后切换它们:

const输入=[
[“2”、“X”、“8”、“11”、“15”],
[“1”、“5”、“X”、“X”、“14”],
[“X”、“4”、“7”、“10”、“13”],
[“X”、“3”、“6”、“9”、“12”]
];
const getLoc=char=>{
const arrdindex=input.findIndex(subar=>subar.includes(char));
const subarindex=输入[arrdex].indexOf(char);
返回[arrIndex,subrrindex];
};
常量移动=(字符1,字符2)=>{
const[loc1,loc2]=[char1,char2].map(getLoc);
[
//第一个字符的开关位置:
输入[loc1[0]][loc1[1]],
//和第二个字符的位置:
输入[loc2[0]][loc2[1]]
] = [
//具有第二个字符的位置:
输入[loc2[0]][loc2[1]],
//第一个字符:
输入[loc1[0]][loc1[1]]
];
};
移动('2','1');

控制台日志(输入)
您可以使用
findIndex
从各自的数组中查找
2
1
的第一个索引,然后替换它。否则,如果您希望仅在特定索引处替换元素,则可以直接将数组和索引作为目标并替换它

let数据=[
[“2”、“X”、“8”、“11”、“15”],
[“1”、“5”、“X”、“X”、“14”]
];
设find2In1=data[0]。findIndex(item=>item==“2”);
让find1In2=data[1]。findIndex(item=>item==“1”);
数据[0][find2In1]=“1”;
数据[1][find1In2]=“2”;

console.log(data)
根据您的示例判断,您需要选择1和2

输入

输出

0:(5) ["1", "X", "8", "11", "15"]
1: (5) ["2", "5", "X", "X", "14"]
2: (5) ["X", "4", "7", "10", "13"]
3: (5) ["X", "3", "6", "9", "12"]
您可以搜索每个数组,并使用forEach执行此操作

a.forEach((item) => {

   if (item === "1")
      item = "2"
   else
      if (item === "2")
          item = "1"
})

谢谢,这似乎有效,但现在,您正在指定值本身。如果数字和这个例子一样,我想把第一个字符移动到第二个字符,就像下面这个:0:(5)[2,-1,0,0,0,0]1:(5)[0,2,-1,-1,2]2:(5)[1,0,0,0]3:(5)[1,2,0,0,0]谢谢,我可以通过创建另一个向量函数来求解它,它应该返回[1,0];因为我注意到当我将2和0传递给switchVectorValues时,它总是选择第一行来改变这两个值,所以因为我知道要交换的行,所以我只是在向量返回值中指定了它。非常感谢。
a.forEach((item) => {

   if (item === "1")
      item = "2"
   else
      if (item === "2")
          item = "1"
})