javascript - 我可以使用哪些方法来操作对象中数组的数据? (仅限伪代码)

标签 javascript arrays function object methods

背景故事(可跳过):

您好,我是 Lambda 学校的学生。最近我们进行了一次 JS 评估测试,以便进入下一个单元,但我两次都没有及格。所以现在我必须重复第一单元。我今天来这里是为了最终淘汰那场该死的考试。我在使用数组或对象时没有问题,我真正遇到的问题是找出一种方法来解决它们组合时的问题。就像:“到底是什么,我该使用map还是Object.Key?”这类问题在整个考试过程中都出现过。挑战学生很好,但我以前从未同时与他们一起工作过。我完全迷失了这种方法,不知不觉中,我的 3 小时连续两天增加了。

我希望你能提供:

我将提供一个问题并向您展示我所做的工作。我希望你为我制定伪代码来解决这个问题。如果我想成为一名优秀的网络工程师,我需要学习如何使用伪代码。请不要为我解决问题,我问的只是伪代码。我将尝试根据我认为可以管理的伪代码来解决该问题。提前致谢。

问题和当前状态:

/**
 * ### Challenge `getSecondStarshipName`
 * MVP Challenge 🤓
 *
 * @instructions
 * Return second starship's name from `starships` property.
 * If length is 0. Return 'none'
 */
function getSecondStarshipName(character) {
  // TODO: Add your code here.

  const checkProperty = character.hasOwnProperty("starships");
  const checkArray = character.isArray("starships");
  const secondShipLength = character.starships[1].length;
  const secondShipName = character.starships[1].name;

  if (checkProperty && checkArray) {
    if (secondShipLength >= 2) {
      return secondShipName;
    } else {
      return "none";
    }
  } else {
    return "none";
  }
}

数据


window.lukeSkywalker = require('./person-1.json')
window.leiaOrgana = require('./person-5.json')
window.obiWanKenobi = require('./person-10.json')

},{"./person-1.json":2,"./person-10.json":3,"./person-5.json":4}],2:[function(require,module,exports){
module.exports={
  "name": "Luke Skywalker",
  "height": "172",
  "mass": "77",
  "hair_color": "blond",
  "skin_color": "fair",
  "eye_color": "blue",
  "birth_year": "19BBY",
  "homeworld": "Tatooine",
  "films": [
    "A New Hope",
    "The Empire Strikes Back",
    "Return of the Jedi",
    "Revenge of the Sith",
    "The Force Awakens"
  ],
  "species": [
    "Human"
  ],
  "vehicles": [
    {
      "name": "Snowspeeder",
      "model": "t-47 airspeeder",
      "manufacturer": "Incom corporation",
      "cost_in_credits": null,
      "length": "4.5",
      "max_atmosphering_speed": "650",
      "crew": 2,
      "passengers": 0,
      "cargo_capacity": "10"
    },
    {
      "name": "Imperial Speeder Bike",
      "model": "74-Z speeder bike",
      "manufacturer": "Aratech Repulsor Company",
      "cost_in_credits": 8000,
      "length": "3",
      "max_atmosphering_speed": "360",
      "crew": 1,
      "passengers": 1,
      "cargo_capacity": "4"
    }
  ],
  "starships": [
    {
      "name": "X-wing",
      "model": "T-65 X-wing",
      "manufacturer": "Incom Corporation",
      "cost_in_credits": 149999,
      "length": "12.5",
      "max_atmosphering_speed": "1050",
      "crew": 1,
      "passengers": 0,
      "cargo_capacity": "110",
      "consumables": "1 week",
      "hyperdrive_rating": "1.0",
      "MGLT": "100",
      "starship_class": "Starfighter"
    },
    {
      "name": "Imperial shuttle",
      "model": "Lambda-class T-4a shuttle",
      "manufacturer": "Sienar Fleet Systems",
      "cost_in_credits": 240000,
      "length": "20",
      "max_atmosphering_speed": "850",
      "crew": 6,
      "passengers": 20,
      "cargo_capacity": "80000",
      "consumables": "2 months",
      "hyperdrive_rating": "1.0",
      "MGLT": "50",
      "starship_class": "Armed government transport"
    }
  ],
  "created": "2014-12-09T13:50:51.644000Z",
  "edited": "2014-12-20T21:17:56.891000Z",
  "url": "https://swapi.co/api/people/1/"
}
},{}],3:[function(require,module,exports){
module.exports={
  "name": "Obi-Wan Kenobi",
  "height": "182",
  "mass": "77",
  "hair_color": "auburn, white",
  "skin_color": "fair",
  "eye_color": "blue-gray",
  "birth_year": "57BBY",
  "gender": "male",
  "homeworld": "Stewjon",
  "films": [
    "A New Hope",
    "The Empire Strikes Back",
    "Return of the Jedi",
    "The Phantom Menace",
    "Attack of the Clones",
    "Revenge of the Sith"
  ],
  "species": [
    "Human"
  ],
  "vehicles": [
    {
      "name": "Tribubble bongo",
      "model": "Tribubble bongo",
      "manufacturer": "Otoh Gunga Bongameken Cooperative",
      "cost_in_credits": null,
      "length": "15",
      "max_atmosphering_speed": "85",
      "crew": 1,
      "passengers": 2,
      "cargo_capacity": "1600"
    }
  ],
  "starships": [
    {
      "name": "Jedi starfighter",
      "model": "Delta-7 Aethersprite-class interceptor",
      "manufacturer": "Kuat Systems Engineering",
      "cost_in_credits": 180000,
      "length": "8",
      "max_atmosphering_speed": "1150",
      "crew": 1,
      "passengers": 0,
      "cargo_capacity": "60",
      "consumables": "7 days"
    },
    {
      "name": "Trade Federation cruiser",
      "model": "Providence-class carrier/destroyer",
      "manufacturer": "Rendili StarDrive, Free Dac Volunteers Engineering corps.",
      "cost_in_credits": 125000000,
      "length": "1088",
      "max_atmosphering_speed": "1050",
      "crew": 600,
      "passengers": 48247,
      "cargo_capacity": "50000000",
      "consumables": "4 years"
    },
    {
      "name": "Naboo star skiff",
      "model": "J-type star skiff",
      "manufacturer": "Theed Palace Space Vessel Engineering Corps/Nubia Star Drives, Incorporated",
      "cost_in_credits": null,
      "length": "29.2",
      "max_atmosphering_speed": "1050",
      "crew": 3,
      "passengers": 3,
      "cargo_capacity": null,
      "consumables": null
    },
    {
      "name": "Jedi Interceptor",
      "model": "Eta-2 Actis-class light interceptor",
      "manufacturer": "Kuat Systems Engineering",
      "cost_in_credits": 320000,
      "length": "5.47",
      "max_atmosphering_speed": "1500",
      "crew": 1,
      "passengers": 0,
      "cargo_capacity": "60",
      "consumables": "2 days"
    },
    {
      "name": "Belbullab-22 starfighter",
      "model": "Belbullab-22 starfighter",
      "manufacturer": "Feethan Ottraw Scalable Assemblies",
      "cost_in_credits": 168000,
      "length": "6.71",
      "max_atmosphering_speed": "1100",
      "crew": 1,
      "passengers": 0,
      "cargo_capacity": "140",
      "consumables": "7 days"
    }
  ],
  "created": "2014-12-10T16:16:29.192000Z",
  "edited": "2014-12-20T21:17:50.325000Z",
  "url": "https://swapi.co/api/people/10/"
}
},{}],4:[function(require,module,exports){
module.exports={
  "name": "Leia Organa",
  "height": "150",
  "mass": "49",
  "hair_color": "brown",
  "skin_color": "light",
  "eye_color": "brown",
  "birth_year": "19BBY",
  "gender": "female",
  "homeworld": "Alderaan",
  "films": [
      "A New Hope",
      "The Empire Strikes Back",
      "Return of the Jedi",
      "Revenge of the Sith",
      "The Force Awakens"
  ],
  "species": [
      "Human"
  ],
  "vehicles": [
    {
      "name": "Imperial Speeder Bike",
      "model": "74-Z speeder bike",
      "manufacturer": "Aratech Repulsor Company",
      "cost_in_credits": 8000,
      "length": "3",
      "max_atmosphering_speed": "360",
      "crew": 1,
      "passengers": 1,
      "cargo_capacity": "4"
    }
  ],
  "starships": [],
  "created": "2014-12-10T15:20:09.791000Z",
  "edited": "2014-12-20T21:17:50.315000Z",
  "url": "https://swapi.co/api/people/5/"
}
},{}]},{},[1]);

我将如何解决这个问题(伪代码):

//Create a variable called starship2nd
//Assign starship2nd the 2nd starship of each character.
//Check the length of the 2nd starship of each character.  [[I'm stuck on this phase.]]
//Return 'none' after the checker function iterates through the Object's array. [[[Not sure how to do this part either..]] 

失败的解决方案(它们可以修复吗?O_O)

解决方案1(失败)


const starship2nd = character.starships[1].name
const shipLength = starship2nd.length

function checkLength () {

if (shipLength === 0) {

return 'none'

}

 return checkLength()


感谢您的宝贵时间。 ^_^

最佳答案

这是一些伪代码

if (character has property 'starships' and it is an array) {
  if (length of starships is at least 2) {
    return name property of second starship
  } else {
    return none
  }
} else {
  return none
}

您可能认为其中一些检查太过分了,而且没有必要,因为您知道自己的输入,但在开始访问和假设之前仔细检查属性和长度始终是一个好习惯。

我希望这可以帮助您推理问题。

关于javascript - 我可以使用哪些方法来操作对象中数组的数据? (仅限伪代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59753802/

相关文章:

javascript - 从javascript中的函数更新全局变量

javascript - Angular UI Router,路由解析破坏刷新按钮

javascript - Node Canvas /Resemble.js 错误 : Image given has not completed loading at load

javascript - jQuery 获取表中不按顺序的下一个文本框

arrays - Ruby - 将数组元素移动到给定位置

php - mysql_result 资源无效

javascript - 在 jQuery 淡入中使用 'this' 变量?

jquery - 如何获取表的所有 tr 元素并使用 jquery 过滤它们?

python - 从数据框中的数组制作散点图

c++ - 使用不同的函数测试数字是否为回文 (C++)