2017-03-09 21 views
0

我想将原始代码(多变量w /循环)更改为对象文字。是的,我知道你不能在一个对象字面上运行循环,但看到多个变量给我一个宠物peeve。修复代码(多变量,循环和对象文字)

这里的原代码

var fruits, text, fLen, i; 
 

 
fruits = ["Banana", "Orange", "Apple", "Mango"]; 
 
fruits[6] = "Lemon"; // this is the code that got deleted 
 
fLen = fruits.length; 
 
text = "<ul>"; 
 
for (i = 0; i < fLen; i++) { 
 
    text += "<li>" + fruits[i] + "</li>"; 
 
    } 
 
text += "</ul>"; 
 
document.write(text);

而新代码

var fruitOrder = { 
 
    fruit : ["Banana", "Orange", "Apple", "Mango"], 
 
    //fLen : fruits.length, --moved to for loop-- 
 
    text : "<ul>", 
 
    loop : function() { 
 
     for (var i = 0; i < this.fruit.length; i++) { 
 
     this.text += "<li>" + this.fruit[i] + "</li>"; 
 
     } 
 
     this.text += "</ul>"; 
 
     document.write(this.text); 
 
    } 
 
}; 
 
fruitOrder.loop();

无论是原&新的代码工作,但问题是我在更改代码时意外删除了fruits[6] = "Lemon";。 我也试过很多办法把它和让它工作,但它不会给我我想要它返回的输出:

  • 香蕉橘子苹果芒果不确定不确定柠檬
+0

您可以添加循环函数对象 –

+0

@MaciejKozieja的原型是什么有越来越'“柠檬”'到做:重新在返回对象之前修改水果对象'水果'阵列? – Barmar

+0

@Barmar没有创建新的函数来evry object posible –

回答

0

如果你想要一个更远的元素,你可以在数组里面留下空白。

var fruitOrder = { 
 
    fruit : ["Banana", "Orange", "Apple", "Mango", , ,"Lemon"], 
 
    //fLen : fruits.length, --moved to for loop-- 
 
    text : "<ul>", 
 
    loop : function() { 
 
     for (var i = 0; i < this.fruit.length; i++) { 
 
     this.text += "<li>" + this.fruit[i] + "</li>"; 
 
     } 
 
     this.text += "</ul>"; 
 
     document.write(this.text); 
 
    } 
 
}; 
 
fruitOrder.loop();

或者你可以创建对象后添加到阵列。

var fruitOrder = { 
 
    fruit : ["Banana", "Orange", "Apple", "Mango"], 
 
    //fLen : fruits.length, --moved to for loop-- 
 
    text : "<ul>", 
 
    loop : function() { 
 
     for (var i = 0; i < this.fruit.length; i++) { 
 
     this.text += "<li>" + this.fruit[i] + "</li>"; 
 
     } 
 
     this.text += "</ul>"; 
 
     document.write(this.text); 
 
    } 
 
}; 
 
fruitOrder.fruit[6] = "Lemon"; 
 
fruitOrder.loop();

+0

downvoting帮助? upvoted。这里有什么错在这里愿意为300k :) –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ我不会让它困扰我,我有充足的代表备用。 – Barmar

+0

因为我希望能够随时将数字更改为'fruits [6] =“柠檬”,所以我会拿第二个代码;'谢谢! – lindsey

0
fruitOrder.fruit[6]= "Lemon"; 

会做

var fruitOrder = { 
 
    fruit : ["Banana", "Orange", "Apple", "Mango"], 
 
    //fLen : fruits.length, --moved to for loop-- 
 
    text : "<ul>", 
 
    loop : function() { 
 
     for (var i = 0; i < this.fruit.length; i++) { 
 
     this.text += "<li>" + this.fruit[i] + "</li>"; 
 
     } 
 
     this.text += "</ul>"; 
 
     document.write(this.text); 
 
    } 
 
}; 
 
fruitOrder.fruit[6]= "Lemon"; 
 
fruitOrder.loop();

0

如果你想Lemon永远是在指数6,你可以使用JavaScript瓶盖

var fruitOrder = (function() { 
 
    var data = { 
 
    fruit: ["Banana", "Orange", "Apple", "Mango"], 
 
    //fLen : fruits.length, --moved to for loop-- 
 
    text: "<ul>", 
 
    loop: function() { 
 
     for (var i = 0; i < this.fruit.length; i++) { 
 
     this.text += "<li>" + this.fruit[i] + "</li>"; 
 
     } 
 
     this.text += "</ul>"; 
 
     document.write(this.text); 
 
    } 
 
    }; 
 
    data.fruit[6] = "Lemon"; 
 
    return data; 
 
})(); 
 
fruitOrder.loop();

+0

但我希望能够随时将数字更改为'fruits [6] =“Lemon”;',但感谢您的建议^。^ – lindsey

+0

@ user7021951这很有道理。感谢澄清。我更新了答案,以更符合这一点。 –