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

Javascript 如何使用用户输入在数组中查找值

Javascript 如何使用用户输入在数组中查找值,javascript,html,arrays,Javascript,Html,Arrays,然后我从用户那里得到一个输入,要求他们选择一个位置(例如x1)将其存储为输入1,然后要求他们选择另一个位置(例如x2)并将其存储为输入2,我必须交换该值的位置 我最初尝试了类似于Array[input1]=Array[input2] 但是Array[input1]未定义,即使input1=x1,因为Array[x1]仍然未定义 那么如何使Array[x1]=Array[0]可以交换值,或者有更简单的方法吗 如果我的问题格式不正确,很抱歉。假设输入是字符串('x1'和'x2'),您需要一种方法来表

然后我从用户那里得到一个输入,要求他们选择一个位置(例如
x1
)将其存储为输入1,然后要求他们选择另一个位置(例如
x2
)并将其存储为输入2,我必须交换该值的位置

我最初尝试了类似于
Array[input1]=Array[input2]

但是
Array[input1]
未定义,即使
input1=x1
,因为
Array[x1]
仍然未定义

那么如何使
Array[x1]=Array[0]
可以交换值,或者有更简单的方法吗

如果我的问题格式不正确,很抱歉。

假设输入是字符串(
'x1'
'x2'
),您需要一种方法来表示数据结构中的变量名。一种方法是使用对象数组,而不是字符串数组,该数组包含
标签
属性。然后,只需找到两个输入的两个标签的标记,并重新分配这些标记

另外,最好不要指定一个名为
Array
的变量,因为这会影响全局
Array
对象-将其命名为其他名称,如
arr

const arr=[
{标签:'x1',值:'&spades'},
{标签:'y1',值:'&clubs'},
{标签:'z1',值:'&hearts'}
// ...
];
//投入:
常数label1='x1';
常数label2='y1';
//计算指标:
常数[index1,index2]=[label1,label2]。映射(
findLabel=>arr.findIndex(({label})=>label==findLabel)
);
([arr[index1],arr[index2]]=[arr[index2],arr[index1]]);

控制台日志(arr)以下是使用对象时代码的外观:

让arr={};
arr['x1']='&黑桃';
arr['y1']='和俱乐部';
arr['z1']='和hearts';
arr['x2']='';
arr['y2']='';
arr['z2']='';
arr['x3']='';
arr['y3']='';
arr['z3']='';
console.log(arr['z1']);
arr['z1']='foo';

console.log(arr['z1'])
对于初学者来说,“Array”是一个关键字。将其用作变量名可能不是一个好主意。接下来,数组的索引是0到9。JS不知道如何将“x2”映射到4。使用变量临时存储数组[firstValueToSwap]值的值,并将数组[secondValueToSwap]存储在数组[firstValueToSwap]中,将值存储在临时数组[secondValueToSwap]中。这是交换两个值的最简单方法。顺便说一句,你的问题不是很清楚。希望这就是你要找的for@CertainPerformance是的,输入是一个字符串。根据我的理解,你有一个包含9个元素的数组。示例:['黑桃','梅花','红桃','','','','','','','','','','']。现在您需要交换两个索引(input1和input2)处的值,例如,如果用户输入0和2。新的数组将是['红心','梅花','黑桃','','','','','','','']。我写这篇评论是为了让社区能够正确理解这个问题。@JimB。我知道这不是我真正的代码我的数组要大得多只是一个简单的版本,我知道JS不知道如何将x2映射到4,但我想看看是否有其他方法,否则我必须重写我的程序我一回到家就会尝试,我明白你的意思,我使用了一个非常简单的代码版本作为我尝试做的示例,我知道不给它命名array只是一个示例,但我将尝试在我自己的代码中实现此方法,让您知道它是如何运行的,谢谢是的,谢谢@CertainPerformance,通过创建对象数组,我现在可以在数组和用户输入之间建立连接,因此现在我可以切换它们,在底部,我对整个切换的工作方式有点模糊,我只是使用了一些带有中间变量的if语句,因为我不了解下半部分在做什么。尽管我会努力去尝试去理解它。谢谢你的帮助。我现在明白你的意思了。某些performace正在说同样的话。我会尽快尝试,谢谢你。是的,@JimB。你是对的答案是我必须制作一个对象数组。谢谢你的帮助。
var x1 ='&spades',
    y1 ='&clubs'
    z1 ='&hearts';
var x2 = ' ', y2 = ' ', z2 = ' ';  
var x3 = ' ', y3 = ' ', z3 = ' ';    


var Array = [x1,y1,z1,
             x2,y2,z2,
             x3,y3,z3];