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