Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript循环来比较不同的数字_Javascript_Loops_Comparison - Fatal编程技术网

Javascript循环来比较不同的数字

Javascript循环来比较不同的数字,javascript,loops,comparison,Javascript,Loops,Comparison,我从stackoverflow搜索了这类帖子,但我对JS还不是很熟悉,所以我仍然不知道如何解决我的问题。 我有两个数组(第一个包括“名称”,另一个包括“高度”)。我做了一个循环,在网页上显示了一些关于他们的信息。但是现在我想做一个循环来比较这些值。 我知道一个解决办法是我写if,elseif,else句子,但看起来不是很聪明。。。 Atm我的代码如下所示: <!doctype html> <html> <head></head> <body&

我从stackoverflow搜索了这类帖子,但我对JS还不是很熟悉,所以我仍然不知道如何解决我的问题。 我有两个数组(第一个包括“名称”,另一个包括“高度”)。我做了一个循环,在网页上显示了一些关于他们的信息。但是现在我想做一个循环来比较这些值。 我知道一个解决办法是我写if,elseif,else句子,但看起来不是很聪明。。。 Atm我的代码如下所示:

<!doctype html>
<html>
<head></head>
<body>
<p id="test2">...</p>
<p id="test3">...</p>
<p id="test4">...</p>
<p id="test5">...</p>
<script>

// Arrays. 1st with names. 2nd with heigths in cm.

var names = ["name1", "name2", "name3", "name4"];
var height = [150, 165, 160, 165, 170];

/* Loop to show some info on page.
E.g name1 is 150cm
name2 is 155cm */

var text = "";

for(var i = 0; i < (names.length); i++) {
text += names[i] + " is " + height[i] + "cm tall <br>";
} 
document.getElementById("test2").innerHTML = text;

// Comparison by heights
var a = height[0];
var b = height[1];
var c = height[2];
var d = height[3];

if(a < b) {
document.getElementById("test3").innerHTML = names[0] + " is shorter than " + names[1];
} 
else if (a > b){
document.getElementById("test3").innerHTML = names[0] + " is taller than " + names[1];
}
else {
    document.getElementById("test3").innerHTML = names[0] + " is equal to " + names[1] + " height";
}

if(b < c) {
document.getElementById("test4").innerHTML = names[1] + " is shorter than " + names[2];
} 
else if (b > c){
document.getElementById("test4").innerHTML = names[1] + " is taller than " + names[2];
}
else {
    document.getElementById("test4").innerHTML = names[1] + " is equal to " + names[2] + " height";
}
</script>
</body>
</html>
<!doctype html>
<html>
<head></head>
<body>
<p id="test1">...</p>
<p id="test2">...</p>
<p id="test3">...</p>
<p id="test4">...</p>
<p id="test5">...</p>
<script>

// Arrays. 1st with names. 2nd with heigths in cm.

var names = ["name1", "name2", "name3", "name4"];
var height = [150, 165, 160, 165, 170];

var obj = [
    {id: 1, name: "name1", compareId: 2, height: 150, resultId: 3},
    {id: 2, name: "name2", compareId: 3, height: 165, resultId: 4},
    {id: 3, name: "name3", compareId: 4, height: 160, resultId: 5},
    {id: 4, name: "name4", compareId: 1, height: 165, resultId: 1}
]

var text = "";

for(var i = 0; i < (obj.length); i++) {
    text += obj[i].name + " is " + obj[i].height + "cm tall <br>";
}
document.getElementById("test2").innerHTML = text;

for(var i = 0; i < (obj.length); i++) {
        var item = getById(obj[i].compareId);
        if(obj[i].height < item.height)
            document.getElementById("test" + obj[i].resultId).innerHTML = obj[i].name + " is shorter than " + item.name;
        else if(obj[i].height > item.height)
            document.getElementById("test" + obj[i].resultId).innerHTML = obj[i].name + " is taller than " + item.name;
        else 
            document.getElementById("test" + obj[i].resultId).innerHTML = obj[i].name + " is equal than " + item.name;
}

function getById (id) {
    for(var i = 0; i < (obj.length); i++) {
        if  (obj[i].id === id)
            return obj[i];
    }
}

</script>
</body>
</html>

//数组。第一个是名字。第二个,高度单位为厘米。 变量名称=[“名称1”、“名称2”、“名称3”、“名称4”]; 变量高度=[1501651616165170]; /*循环以在页面上显示一些信息。 例如,名称1为150厘米 名称2为155厘米*/ var text=“”; 对于(变量i=0;i<(names.length);i++){ text+=名称[i]+“是”+高度[i]+“厘米高
”; } document.getElementById(“test2”).innerHTML=text; //身高比较 var a=高度[0]; var b=高度[1]; var c=高度[2]; var d=高度[3]; if(ab){ document.getElementById(“test3”).innerHTML=names[0]+“比”+names[1]高; } 否则{ document.getElementById(“test3”).innerHTML=names[0]+“等于”+names[1]+“height”; } if(bc){ document.getElementById(“test4”).innerHTML=names[1]+“比”+names[2]高; } 否则{ document.getElementById(“test4”).innerHTML=names[1]+“等于”+names[2]+“height”; }
我曾经尝试过一些我想到的解决方案,但是因为“javascript知识不是很好”,我仍然不知道如何去做。。。
如果有人能帮助我,我将不胜感激。

您可以将每个元素与高度的每个元素进行比较,并打印结果

函数追加(字符串){
var node=document.getElementById('result');
appendChild(document.createTextNode(字符串));
node.appendChild(document.createElement('br'));
}
变量名称=[“名称1”、“名称2”、“名称3”、“名称4”];
变量高度=[150、165、160、165、/*170无名称*/];
var text=“”,
i、 j;
对于(变量i=0;i<(names.length);i++){
text+=名称[i]+“是”+高度[i]+“厘米高
”; } document.getElementById(“test2”).innerHTML=text; 对于(i=0;i高度[j]){ 追加(名称[i]+”高于“+名称[j]); }否则{ 追加(名称[i]+”等于“+名称[j]); } } }


一个简单的解决方案是创建一个比较两个高度的函数,然后输出一个可以分配给DOM元素的字符串。您可能还希望将信息存储在对象中,这样就不会有多个数组:

功能比较人(person1,person2){
if(人1.身高<人2.身高){
return person1.name+“短于”+person2.name;
}否则如果(person1.height>person2.height){
return person1.name+“高于”+person2.name;
}否则{
return person1.name+“等于”+person2.name+“高度”;
}
}
var people=[
{name:'name1',高度:150},
{name:'name2',高度:165},
{name:'name3',高度:160},
{name:'name4',高度:165}
];
var text=“”;
人员。forEach(功能(人员){
text+=person.name+'是'+person.height+'厘米高
'; }); document.getElementById(“test1”).innerHTML=text; document.getElementById(“test2”).innerHTML=comparePeople(people[0],people[1]); document.getElementById(“test3”).innerHTML=comparePeople(people[1],people[2])


您可以使用如下对象数组:

<!doctype html>
<html>
<head></head>
<body>
<p id="test2">...</p>
<p id="test3">...</p>
<p id="test4">...</p>
<p id="test5">...</p>
<script>

// Arrays. 1st with names. 2nd with heigths in cm.

var names = ["name1", "name2", "name3", "name4"];
var height = [150, 165, 160, 165, 170];

/* Loop to show some info on page.
E.g name1 is 150cm
name2 is 155cm */

var text = "";

for(var i = 0; i < (names.length); i++) {
text += names[i] + " is " + height[i] + "cm tall <br>";
} 
document.getElementById("test2").innerHTML = text;

// Comparison by heights
var a = height[0];
var b = height[1];
var c = height[2];
var d = height[3];

if(a < b) {
document.getElementById("test3").innerHTML = names[0] + " is shorter than " + names[1];
} 
else if (a > b){
document.getElementById("test3").innerHTML = names[0] + " is taller than " + names[1];
}
else {
    document.getElementById("test3").innerHTML = names[0] + " is equal to " + names[1] + " height";
}

if(b < c) {
document.getElementById("test4").innerHTML = names[1] + " is shorter than " + names[2];
} 
else if (b > c){
document.getElementById("test4").innerHTML = names[1] + " is taller than " + names[2];
}
else {
    document.getElementById("test4").innerHTML = names[1] + " is equal to " + names[2] + " height";
}
</script>
</body>
</html>
<!doctype html>
<html>
<head></head>
<body>
<p id="test1">...</p>
<p id="test2">...</p>
<p id="test3">...</p>
<p id="test4">...</p>
<p id="test5">...</p>
<script>

// Arrays. 1st with names. 2nd with heigths in cm.

var names = ["name1", "name2", "name3", "name4"];
var height = [150, 165, 160, 165, 170];

var obj = [
    {id: 1, name: "name1", compareId: 2, height: 150, resultId: 3},
    {id: 2, name: "name2", compareId: 3, height: 165, resultId: 4},
    {id: 3, name: "name3", compareId: 4, height: 160, resultId: 5},
    {id: 4, name: "name4", compareId: 1, height: 165, resultId: 1}
]

var text = "";

for(var i = 0; i < (obj.length); i++) {
    text += obj[i].name + " is " + obj[i].height + "cm tall <br>";
}
document.getElementById("test2").innerHTML = text;

for(var i = 0; i < (obj.length); i++) {
        var item = getById(obj[i].compareId);
        if(obj[i].height < item.height)
            document.getElementById("test" + obj[i].resultId).innerHTML = obj[i].name + " is shorter than " + item.name;
        else if(obj[i].height > item.height)
            document.getElementById("test" + obj[i].resultId).innerHTML = obj[i].name + " is taller than " + item.name;
        else 
            document.getElementById("test" + obj[i].resultId).innerHTML = obj[i].name + " is equal than " + item.name;
}

function getById (id) {
    for(var i = 0; i < (obj.length); i++) {
        if  (obj[i].id === id)
            return obj[i];
    }
}

</script>
</body>
</html>

//数组。第一个是名字。第二个,高度单位为厘米。 变量名称=[“名称1”、“名称2”、“名称3”、“名称4”]; 变量高度=[1501651616165170]; var obj=[ {id:1,name:“name1”,compareId:2,height:150,resultId:3}, {id:2,name:“name2”,compareId:3,height:165,resultId:4}, {id:3,name:“name3”,compareId:4,height:160,resultId:5}, {id:4,name:“name4”,compareId:1,height:165,resultId:1} ] var text=“”; 对于(变量i=0;i<(对象长度);i++){ text+=obj[i]。name+“是”+obj[i]。高度+“厘米高
”; } document.getElementById(“test2”).innerHTML=text; 对于(变量i=0;i<(对象长度);i++){ var item=getById(obj[i].compareId); if(obj[i].高度<项目高度) document.getElementById(“test”+obj[i].resultId).innerHTML=obj[i].name+”比“+item.name”短; else if(obj[i].height>item.height) document.getElementById(“test”+obj[i].resultId).innerHTML=obj[i].name+”比“+item.name”高; 其他的 document.getElementById(“test”+obj[i].resultId).innerHTML=obj[i].name+”等于“+item.name; } 函数getById(id){ 对于(变量i=0;i<(对象长度);i++){ if(obj[i].id==id) 返回obj[i]; } }
我不知道为什么,但我完全忘记了对象。谢谢,现在一切都好了!哦,还要感谢forEach,它看起来很结实!:)