从匹配数组中的某个位置返回值

Return values from certain position in matching array

提问人:Gary 提问时间:5/3/2023 更新时间:5/3/2023 访问量:47

问:

我希望创建一个函数,该函数根据 URL 中出现的特定关键字从一组数组中返回一个值。

例如:

var URL = "https://blah.com/BCKM";
var indexCode = URL.split('/').pop();

var choices = [['BCKM', 'Beckham', '7'],['SCHO', 'Scholes', '18'],['YRKE', 'Yorke', '19'],['COLE', 'Cole', '9']]

**find "indexCode" in "choices" arrays, then return**

var name = **second item in array that matches BCKM**
var number = **third item in array that matches BCKM**

$(".name").html(name);
$(".number").html(number);


因此,如果 URL blah.com/BCKM,脚本将查找 var “choices” 并返回第二个和第三个值,并将它们插入 2 个范围:

<span class="name">Beckham</span>
<span class="number">7</span>

我只想知道这是否可行,如果可以,是否可以为我指明正确的方向。

jQuery 数组 筛选器 匹配 查找

评论

0赞 zer00ne 5/3/2023
看起来非常混乱和不切实际。然后尝试和 .const result = choices.filter(sub => sub[0] === indexCode)const name = result[1]const number = result[2]
0赞 Gary 5/3/2023
谢谢。我完全同意你的看法。我只是最初不确定要使用哪种类型的函数才能获得最佳结果。

答:

0赞 4b0 5/3/2023 #1

首先,找到具有所需代码的子数组索引(例如)。基于该发现和 from 子数组。BCKMNameNumber

例:

var URL = "https://blah.com/BCKM";
var indexCode = URL.split('/').pop();

var choices = [
  ['BCKM', 'Beckham', '7'],
  ['SCHO', 'Scholes', '18'],
  ['YRKE', 'Yorke', '19'],
  ['COLE', 'Cole', '9']
];


function find(choices, code) {
  return choices.findIndex(row => row.indexOf(code) !== -1);
}

var ind = find(choices, indexCode); // get index

var name = choices[ind][1];
var number = choices[ind][2];

$(".name").html(name);
$(".number").html(number);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="name"></span> <br/>
<span class="number"></span>

评论

1赞 Gary 5/3/2023
非常感谢。这正是我想要的!我确实对jQuery有相当基本的掌握,但这让我有点难倒!