首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果条件没有给出预期的结果

如果条件没有给出预期的结果
EN

Stack Overflow用户
提问于 2019-01-28 05:47:55
回答 3查看 54关注 0票数 0

我正在使用javascript在一个表格中显示我的数据,该表格显示了Name、Sex、Look和Age列。

对于Looks列,我写了一个脚本,如果性别是男性,该列应该显示外观的值为“帅”,如果性别是女性,该列应该显示的值的外观作为“美丽”的值。

但它只显示了男性和女性的“帅气”。

以下是我的代码:

代码语言:javascript
复制
   var myObj = [{name: "Taimoor", sex: "male", age: "Thirty One"},{name: 
   "Nida", sex: "female", age: "Twenty Nine"}];

   var table = "<tr><td>Name</td><td>Sex</td><td>Looks</td><td>Age</td> 
   </tr>";

   function myLooks() {
   for (ii in myObj) {
   var looks = "";
   if (myObj[ii].sex == "male") {looks = "handsome"}
   else {looks = "beautiful"};
   return looks;
   }
   }

   for (i=0; i <myObj.length; i++) {

   table += "<tr><td>" + myObj[i].name + "</td><td>" + myObj[i].sex + " 
   </td><td>" + myLooks() + "</td><td>" + myObj[i].age + "</td></tr>"





   document.getElementById("demo").innerHTML = table;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-28 05:56:09

你不需要一个循环,你可以把性别传递给函数,然后返回正确的字符串:-

代码语言:javascript
复制
var myObj = [{name: "Taimoor", sex: "male", age: "Thirty One"},{name:
    "Nida", sex: "female", age: "Twenty Nine"}];

function myLooks(sex) {
  if (sex == "male") {
    return  "handsome"
  }
  else {
    return  "beautiful"
  }
}

for (i = 0; i < myObj.length; i++) {
  console.log(myObj[i].name, myObj[i].sex, myLooks(myObj[i].sex), myObj[i].age);
}

票数 1
EN

Stack Overflow用户

发布于 2019-01-28 05:59:22

首先,myObj是一个数组,您使用的是一个for/in循环。for/in loops should not be used with Arrays,因为它们迭代数组对象的所有属性,而不仅仅是索引。要简单地迭代数组,可以使用常规的计数循环,.forEach()for/of

您还会再次循环并多次调用该函数,此时您只需运行该函数一次,并对数组进行一次循环。

代码语言:javascript
复制
var myObj = [
  {name: "Taimoor", sex: "male", age: "Thirty One"},
  {name: "Nida", sex: "female", age: "Twenty Nine"}
];

var headerRow = "<tr><td>Name</td><td>Sex</td><td>Looks</td><td>Age</td></tr>";
var table = document.getElementById("demo");
table.innerHTML = headerRow;

function myLooks() {
  var newRow = "";
  var looks = "";
  
  myObj.forEach(function(obj) {
   if (obj.sex == "male") {
     looks = "handsome";
   } else {
     looks = "beautiful"
   };
   newRow = "<tr><td>" + obj.name + "</td><td>" + obj.sex + 
   "</td><td>" + looks + "</td><td>" + obj.age + "</td></tr>"

   table.innerHTML += newRow;
  });
}

myLooks();
代码语言:javascript
复制
table, td { border:1px solid #e0e0e0;}
代码语言:javascript
复制
<table id="demo"></table>

票数 0
EN

Stack Overflow用户

发布于 2019-01-28 06:03:59

目前,您的myLooks函数根据myObj数组中的第一项设置looks变量,然后返回。取而代之的是,您可以将想要确定外观的值作为参数传递给函数,下面是一个示例:

代码语言:javascript
复制
var myObj = [{
  name: "Taimoor",
  sex: "male",
  age: "Thirty One"
}, {
  name: "Nida",
  sex: "female",
  age: "Twenty Nine"
}];

var table = "<tr><td>Name</td><td>Sex</td><td>Looks</td><td>Age</td>  </tr>";

function myLooks(obj) {
  var looks = "";
  if (obj.sex == "male") {
    looks = "handsome"
  } else {
    looks = "beautiful"
  };
  return looks;
}

for (i = 0; i < myObj.length; i++) {
  table += ("<tr><td>" + myObj[i].name + "</td><td>" + myObj[i].sex + "  </td><td>" + myLooks(myObj[i]) + "</td> <td> " + myObj[i].age + " </td></tr > ");
}

document.getElementById("demo").innerHTML = table;
代码语言:javascript
复制
<table id="demo"></table>

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

https://stackoverflow.com/questions/54393195

复制
相关文章

相似问题

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