我想使用此代码构建对象

$("input").bind("keydown",function(e){
 var code = (e.keyCode ? e.keyCode : e.which);
 if (code == 13){
  var guess = $("input").val();
  guess = guess.split(" ");
  var oGuess = {};
  for (var x = 0; guess.length ; x++){
   oGuess[x] = oGuess[x] = {"text": guess[x]};
  }
  $("input").val("");
 }
});


这实际上在按Enter键时崩溃了我的浏览器(最新的ff和chrome)。继承人jsfiddle http://jsfiddle.net/kfqJC/1/

我需要对象是这样的

oGuess = {
"1": { "text" : string}
"2": { "text" : string}
...
}


我在这里想念什么?

最佳答案

您的循环永远不会终止。如果guess具有一个或多个元素,则guess.length将始终求值为true

我想你要

for (var x = 0; x < guess.length ; x++){
//              ^^^


另外,这是为了什么?

oGuess[x] = oGuess[x] = {"text": guess[x]};


写就好了

oGuess[x] = {"text": guess[x]};


如果您希望属性以1开头,则必须编写

oGuess[x+1]


以为在这种情况下,我看不出使用对象优于数组的任何优势。

09-26 07:36