首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用什么方法来操作对象中数组的数据?(仅限伪码)

我应该使用什么方法来操作对象中数组的数据?(仅限伪码)
EN

Stack Overflow用户
提问于 2020-01-15 22:47:33
回答 1查看 137关注 0票数 1

背景故事(可跳过):

你好,我是兰姆达学校的一名学生。最近,为了进入下一个单元,我们进行了一次JS评估测试,但我失败了两次。所以现在我必须复习第一单元,我今天在这里是为了最终完成那个该死的考试。我在处理数组或对象时没有问题,我的问题是想出一种方法来解决它们组合在一起时的问题。这就像是:“见鬼,我该用map还是Object.Key?”这些类型的问题在整个考试中都会出现。挑战学生是很好的,但我以前从来没有同时和他们一起工作过。我完全不了解这种方法,在我意识到这一点之前,我的3个小时已经连续两天了。

我希望你能提供:

我将提供一个问题,并展示我所做的工作。我想要的是你为我制定伪代码来解决这个问题。我需要学习如何使用伪代码,如果我想成为一个好的网络工程师。请不要为我解决这个问题,我所要求的都是伪代码。我将尝试基于伪代码来解决这个问题,我觉得这对我来说是可管理的。提前谢谢。

问题和当前状态:

代码语言:javascript
复制
/**
 * ### 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";
  }
}

数据

代码语言:javascript
复制
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]);

我将如何处理这个问题(伪代码):

代码语言:javascript
复制
//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(失败)

代码语言:javascript
复制
const starship2nd = character.starships[1].name
const shipLength = starship2nd.length

function checkLength () {

if (shipLength === 0) {

return 'none'

}

 return checkLength()

谢谢您抽时间见我。^_^

EN

回答 1

Stack Overflow用户

发布于 2020-01-15 22:57:24

下面是一些伪代码

代码语言:javascript
复制
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
}

您可能认为这些检查有些过头了,因为您知道自己的输入,但在开始访问和假设之前仔细检查属性和长度始终是一个好的实践。

我希望这能帮助你对这个问题进行推理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59753802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档