Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 以厘米为单位的脚高与鞋码eu之间的函数_Javascript_Function_Math_Size - Fatal编程技术网

Javascript 以厘米为单位的脚高与鞋码eu之间的函数

Javascript 以厘米为单位的脚高与鞋码eu之间的函数,javascript,function,math,size,Javascript,Function,Math,Size,在网上有很多脚高和鞋子尺寸之间的换算表。在这里我想问一下,在这两个参数之间有一个数学函数。功能应该如下所示: function getShoeSize(height in cm){ ...type magic here... return shoeSize; //size in EU format } 我不认为有一种简单的数学方法可以做到这一点(我相信这是可能的,但对于一般的开发人员来说可能是不可读的) 我建议你可以做什么,这是很容易建立。就是你们制作了一系列的鞋子尺寸(所有尺寸的

在网上有很多脚高和鞋子尺寸之间的换算表。在这里我想问一下,在这两个参数之间有一个数学函数。功能应该如下所示:

function getShoeSize(height in cm){

  ...type magic here...

  return shoeSize; //size in EU format
}

我不认为有一种简单的数学方法可以做到这一点(我相信这是可能的,但对于一般的开发人员来说可能是不可读的)

我建议你可以做什么,这是很容易建立。就是你们制作了一系列的鞋子尺寸(所有尺寸的例子都可以在很多网站上找到)。并使用该数组将
cm
转换为
euro size

阵列的外观可能类似于:

var shoeSizeMap = [
  { cm: 20.8, euroSize: '35' },
  { cm: 21.3, euroSize: '35' },
  { cm: 21.6, euroSize: '35/36' },
  ... etc
]
并使用函数查找它,如:

function findEuroSizeByCm(cm) {
  var result = shoeSizeMap.find(function(shoeSize) {
     return shoeSize.cm == cm;
  });

  return result ? result.euroSize : 'unknown size';
}


findEuroSizeByCm(20.8); // returns 35

注:请注意,我在示例中键入的数字为“float”,如果您的数据源也提供字符串,您可能希望将其作为字符串进行比较(只需将
cm:20.8
更改为
cm:'20.8'
)。

我认为没有一种简单的数学方法可以做到这一点(我相信这是可能的,但对于普通开发者来说可能是不可读的)

我建议你们可以做的是,这很容易构建。你们可以制作一个鞋子尺寸的数组(所有尺寸的例子都可以在和更多的网站上找到)。并使用该数组将
cm
转换为
欧元尺寸

阵列的外观可能类似于:

var shoeSizeMap = [
  { cm: 20.8, euroSize: '35' },
  { cm: 21.3, euroSize: '35' },
  { cm: 21.6, euroSize: '35/36' },
  ... etc
]
并使用函数查找它,如:

function findEuroSizeByCm(cm) {
  var result = shoeSizeMap.find(function(shoeSize) {
     return shoeSize.cm == cm;
  });

  return result ? result.euroSize : 'unknown size';
}


findEuroSizeByCm(20.8); // returns 35

请注意,我在示例中键入的数字为“float”,如果您的数据源也提供字符串,您可能希望将其作为字符串进行比较(只需将
cm:20.8
更改为
cm:'20.8'
)。

很明显,依赖性不是很平滑:

因此,您可以使用二进制搜索查找数组中最近的cm大小,并检查相邻大小是否更接近(例如,对于26.5 cm二进制搜索,可以将表格值26作为较小的值,但26.7更接近,因此42.5大小更适合)。或者使用查找较大值的二进制搜索实现

编辑:由于数组非常小,使用线性搜索更简单。伪代码:

 idx = 0
 while (CmSize[idx] < Foot_len) && (idx < CmSize.Length)
   idx++
 return EUSize[idx]
idx=0
while(CmSize[idx]
很明显,依赖性不是很平稳:

因此,您可以使用二进制搜索查找数组中最近的cm大小,并检查相邻大小是否更接近(例如,对于26.5 cm二进制搜索,可以将表格值26作为较小的值,但26.7更接近,因此42.5大小更适合)。或者使用查找较大值的二进制搜索实现

编辑:由于数组非常小,使用线性搜索更简单。伪代码:

 idx = 0
 while (CmSize[idx] < Foot_len) && (idx < CmSize.Length)
   idx++
 return EUSize[idx]
idx=0
while(CmSize[idx]
我投票将这个问题作为离题题结束,因为这是关于国际鞋码标准的问题,而不是编程本身。我认为这是编程,因为应该有一个数学解决方案,这些尺寸是如何计算的。因此,这不仅仅是关于国际鞋码标准的问题。我投票将这个问题作为离题结束,因为它是关于国际鞋码标准,而不是编程本身。我认为这是编程,因为应该有一个数学解决方案,这些尺寸是如何计算的。所以这不仅仅是关于国际鞋码标准。好的,谢谢,这是一个更简单的解决方案,我可以使用。但我想知道是否有一个数学解决方案,因为它看起来很简单好的,谢谢,这是一个更简单的解决方案,我可以使用。但是我想知道是否有一个数学解决方案,因为看起来这些鞋的尺寸不是以清晰的方式确定的。