首页 > 解决方案 > 在 Javascript 中返回一个元组

问题描述

我有一组具有最大和最小高度的口袋妖怪对象(见下面的快照),我需要以元组的形式返回所有口袋妖怪的平均最小和最大高度

const allPokemon = [
  {
    Height: {
      Minimum: '0.61m',
      Maximum: '0.79m',
    },
  },
];

我需要使用 HOF,所以我想为最大和最小高度做这样的事情:

allPokemon.reduce((acc, cur) => acc + parseInt(cur.Height.Maximum), 0) / allPokemon.length;
allPokemon.reduce((acc, cur) => acc + parseInt(cur.Height.Minimum), 0) / allPokemon.length;

但我不确定如何以元组的形式返回这两个值(创建空数组并将值推入?Concat 方法?)

任何帮助将非常感激。

标签: javascriptarraystuples

解决方案


目前,JavaScript 没有元组。此外,Javascript 是弱类型的

弱类型意味着编译器(如果适用)不强制执行正确的类型。如果没有隐式编译器插入,指令将在运行时出错。

但是,使用objectorarray destructuring您可以将其存档

  1. 您可以使用.reduce初始数据来聚合您的数据,如下所示object{ Maximum: 0, Minimum: 0 }

const allPokemon = [
        {
          Height: {
            Minimum: "1.61m",
            Maximum: "2.79m"
           }
        }]
        
var result = allPokemon.reduce((acc, cur) => {
      acc.Maximum += (parseFloat(cur.Height.Maximum)/allPokemon.length);      
      acc.Minimum += (parseFloat(cur.Height.Minimum)/allPokemon.length);
      
      return acc; 
}, { Maximum: 0, Minimum: 0 });

console.log(result);

  1. 第二种方法是这样使用arraythendestructuring assignment

const allPokemon = [
        {
          Height: {
            Minimum: "1.61m",
            Maximum: "2.79m"
           }
        }]
        
var result = allPokemon.reduce((acc, cur) => {
      acc[0] += (parseFloat(cur.Height.Maximum)/allPokemon.length);      
      acc[1] += (parseFloat(cur.Height.Minimum)/allPokemon.length);
      
      return acc; 
}, [0, 0]);

console.log(result);

// Array Destructuring here
const [Maximum, Minimum] = result;
console.log("Maximum: " + Maximum);
console.log("Minimum: " + Minimum);

例如:

const [a, b] = [10, 20]; // a = 10, b= 20

注意:正如@VLAZ 的评论,在不久的将来我们会有适当的tuplesrecords喜欢这个的proposal-record-tuple


推荐阅读