给定一组正数,负数和零数字,返回百分比数组

时间:2019-09-18 05:59:49

标签: javascript arrays

我需要一些与此相关的问题的帮助:

我们需要一个FractionOf函数,该函数接收一个数组并返回另一个包含以下三个数字的数字:

 in the first position, the fraction of numbers that are positive
 in the second position, the fraction of numbers that are zero
 in the last position, the fraction of numbers that are negative

例如,假设存在50%的正数,25%的零和25%的负数,则FractionOf([1、2、0,-1])应该返回[0.5、0.25、0.25]。

因此,我尝试至少对他们的要求给出某种形式,但我仍然坚持如何将百分比转换为分数并将其添加到职位。

var nums=[1,2,0,0,-1,-4]
function FractionOf(nums){
  var result=[]
  var num1=0
  var num2=0
  var num3=0
  for(var i=0; i<nums.length; i++){
    var num=nums[i]
    if(num>0){
      num1= num1 + 0.25}
    if (num==0){
      num2=num2 + 0.25}
    if(num<0){
     num3=num3 + 0.25}
result.push(num1)
result.push(num2)
result.push(num3)
return result
}

4 个答案:

答案 0 :(得分:2)

function FractionOf(nums) {
  return nums
    .reduce((acc, cur) => {
      if (cur > 0) acc[0]++;
      else if (cur === 0) acc[1]++;
      else acc[2]++;
      return acc;
    }, [0, 0, 0])
    .map(result => result / nums.length);
}

此解决方案使用reduce来计算三种情况中每种情况的发生次数,从一个填充有0的数组开始。结果通过管道传递到map函数,该函数将每个值除以输入num的长度,以获得0-1的百分比。

答案 1 :(得分:0)

要获取百分比结果,您应该使用以下公式计算集合的分数

( total_numbers_from_a_subset / total_numbers ) * 100.

尝试:

var nums=[1,2,0,0,-1,-4]
function FractionOf(nums){
  var result=[]
  var num1=0
  var num2=0
  var num3=0
  for(var i=0; i<nums.length; i++){
    var num=nums[i]
    if(num>0){
      num1++; //how many numbers in the set are < 0
    }
    if (num==0){
      num2++
    }
    if(num<0){
     num3++
    }
}
result.push(num1 / nums.length * 100)
result.push(num2 / nums.length * 100)
result.push(num3 / nums.length * 100)
return result

答案 2 :(得分:0)

您可以通过此方法获得所需的结果。...

public void configure()
    {
        JSONParser parser = new JSONParser();
        try
        {
            String propertyFileName = "emailServer.properties";
            InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propertyFileName);

            JSONObject jsonObject = (JSONObject) parser.parse(new InputStreamReader(inputStream, "StandardCharsets.UTF_8"));
            System.out.println(jsonObject);
            JSONArray jadata = jsonObject.getJSONArray("Servers");
            System.out.println(jadata);

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
}

希望这对您有帮助...

答案 3 :(得分:0)

您可以通过对每个想要的支票返回总和并映射其部分来缩小数组。

function fractionsOf(nums) {
    return nums
        .reduce(([p, m, n], v) => [p + (v > 0), m + (v < 0), n + (v === 0)], [0, 0, 0])
        .map(v => v / nums.length);
}

console.log(fractionsOf([1, 2, 0, -1]));
console.log(fractionsOf([1, 2, 0, 0, -1, -4]));