Jquery 未指定键时查找特定JSON数组值

Jquery 未指定键时查找特定JSON数组值,jquery,arrays,json,Jquery,Arrays,Json,我正在访问一个JSON数组,如下所示: {"female":[ [1,17,99,22], [3,24,13,26], [7,54,11,27] ],"male":[ [1,18,75,33], [3,15,44,47], [7,27,86,55] ]} 在前端,用户选择性别和与数组字符串中第一个值相对应的值。基于这些输入,我想查看JSON并显示一个相应的值 例如,用户选择“男性”和“3岁”。数组每行中的第一个值是age。我感兴趣的值位于行数组的第3位。所以在这种情况下

我正在访问一个JSON数组,如下所示:

{"female":[
  [1,17,99,22],
  [3,24,13,26],
  [7,54,11,27]
],"male":[
  [1,18,75,33],
  [3,15,44,47],
  [7,27,86,55]
]}
在前端,用户选择性别和与数组字符串中第一个值相对应的值。基于这些输入,我想查看JSON并显示一个相应的值

例如,用户选择“男性”和“3岁”。数组每行中的第一个值是age。我感兴趣的值位于行数组的第3位。所以在这种情况下,我想找到“44”

我想如果有钥匙的话,我可以做这个,但是我很难根据位置来匹配

编辑:

让我解释清楚一点。用户在表单中输入两个变量,第一个是性别。第二个是年龄,以年为单位,与第一列相对应。我想显示一个我已经知道的与第三列对应的值(在本例中,假设它是“预期BMI”)。因此,如果用户选择“男性”和“3岁”,我想显示预期的BMI为44


另一个例子是,如果用户选择了“女性”和“7岁”,它应该会输出11。

您喜欢这项工作吗

var gender = 'male';
var age = 3;

var resultNumber = jsonData[0][gender].filter(function(i) {
  if (i[0] == age) {
    return true;
  }
})[0][2];
在这种情况下,
resultNumber
将为44


如果这不是您想要的,请告诉我。

您需要这项工作吗

var gender = 'male';
var age = 3;

var resultNumber = jsonData[0][gender].filter(function(i) {
  if (i[0] == age) {
    return true;
  }
})[0][2];
在这种情况下,
resultNumber
将为44


如果这不是您想要的,请告诉我。

这很容易。记住2D阵列的用法,我们会使用它们

代码如下所示:

var json = [
{
"male" : [
  [1,18,75,33],
  [3,15,44,47],
  [7,27,86,55]
]
}];

for (var key in json) {
if (json.hasOwnProperty(key)) {
  if(json[key].male[1][0] == 3)
        alert("Result is ::"+json[key].male[1][2])
}
}

运行此提琴以找到有效的解决方案:

这很容易。记住2D阵列的用法,我们会使用它们

代码如下所示:

var json = [
{
"male" : [
  [1,18,75,33],
  [3,15,44,47],
  [7,27,86,55]
]
}];

for (var key in json) {
if (json.hasOwnProperty(key)) {
  if(json[key].male[1][0] == 3)
        alert("Result is ::"+json[key].male[1][2])
}
}

运行此提琴以找到有效的解决方案:

如果这3表示我认为它的作用(要选择的性别下的行中第一个元素的值),而您只是忘记了提及其他3值变量表示列索引。这样就可以解决您的大部分问题:

函数GetSomeNumberByGenderAndAgeAttColumn(性别、年龄、列){
//通过某种方式获取真实数据?
var VAL={“女性”:[
[1,17,99,22],
[3,24,13,26],
[7,54,11,27]
],“男”:[
[1,18,75,33],
[3,15,44,47],
[7,27,86,55]
]};
//小型私人佣工
变量findrowbage=
功能(arr、年龄){
var-line=null;
对于(变量i=0;i
如果这3表示我认为它的作用(要选择的性别下的行中第一个元素的值),而您只是忘记了提及其他3值变量,表示列索引。这样就可以解决您的大部分问题:

函数GetSomeNumberByGenderAndAgeAttColumn(性别、年龄、列){
//通过某种方式获取真实数据?
var VAL={“女性”:[
[1,17,99,22],
[3,24,13,26],
[7,54,11,27]
],“男”:[
[1,18,75,33],
[3,15,44,47],
[7,27,86,55]
]};
//小型私人佣工
变量findrowbage=
功能(arr、年龄){
var-line=null;
对于(变量i=0;i
如何确定它是44,而不是75或86?
“男性”和“3”,我想找到输出“44”
-是第二行的第三个值。。您如何知道从第二排中选择。为问题添加了较长的解释。这只是最初的示例--行中的其他值将根据不同的表单输入显示。您的解释仍然没有意义。lol。如何将数字
3
连接到
44
?根据您提供的数据,3岁女性的BMI是多少?更具体地说,数组集代表什么?年龄还是体重指数?或者别的什么?你怎么决定它是44而不是75或86呢?
“male”和“3”,我想找到输出“44”
-是第二行的第三个值。。您如何知道从第二排中选择。为问题添加了较长的解释。这只是最初的示例--行中的其他值将根据不同的表单输入显示。您的解释仍然没有意义。lol。如何将数字
3
连接到
44
?根据您提供的数据,3岁女性的BMI是多少?更具体地说,数组集代表什么?年龄还是体重指数?还是别的?太好了,这正是我需要的。是的,很抱歉把三和列索引搞混了太好了,这正是我需要的。是的,很抱歉把三和列索引搞混了这似乎是正确的想法,但我得到了错误:这似乎是正确的想法,但我得到了错误:在用户输入年龄之前,我不知道要查看json中的哪一行。这个解决方案似乎硬编码了行
male[1]
——这可能部分是因为我解释得不好。在用户输入年龄之前,我不知道要查看json中的哪一行。此解决方案似乎对行进行了硬编码
male[1]
——部分原因可能是我的解释不好。