1

我正在尝试将拆分字符串的值分配给全局对象数组。该字符串称为结果,类似于:“John.Doe.100.New-Mike.Jordan.200.Veteran-”。

拆分字符串工作正常,但我无法将相应的值分配到对象数组中。这根本不起作用。知道问题出在哪里吗?

var UserData[]=new Object();

function SplitDatabase(result){
    var RawUsers = result.split('-');

    for (var i = 0; i < (RawUsers.length-1); i++) {
    var tempUserData=RawUsers[i].split('.');

    for (var x=0; x < (tempUserData.length);x++){

        switch (x)
            {
              case 0:
                     UserData[i].firstname=tempUserData[x];
                      break;
              case 1:
                      UserData[i].lastname=tempUserData[x];
                      break;
              case 2:
                      UserData[i].points=tempUserData[x];
                      break;
              case 3:
                      UserData[i].rank=tempUserData[x];
                      break;
              }
          }

      }
}
4

3 回答 3

3

问题 1 -var UserData[]=new Object();会给你带来麻烦。改为使用var UserData = [];。这类似于 Java 语法,而不是Javascript。

问题 2 -for (var i = 0; i < (RawUsers.length-1); i++) { ... }不会遍历RawUsers. 将其更改为for (var i = 0; i < (RawUsers.length); i++) {.

于 2013-09-27T14:25:46.973 回答
2

线

var UserData[]=new Object(); // <- wrong

不是在 Javascript 中初始化空数组的正确语法。要创建数组,请执行以下操作:

var UserData = [];

Javascript 中的数组,就像其他所有东西一样,默认情况下是无类型的。他们可以存储任何东西。要在其中存储一个对象,您首先必须创建一个:

var UserDataEntry = {};

然后你可以为这个空对象分配属性:

UserDataEntry.firstname = tempUserData[0];
UserDataEntry.lastname = tempUserData[1];

然后您可以将该新对象放入数组中:

UserData.push(UserDataEntry);

push 方法将其添加为数组的最后一个元素。

或者,您可以使用 JSON 语法并在创建对象时使用属性初始化对象:

var UserDataEntry = {
     firstname:tempUserData[0],         
     lastname:tempUserData[1],
     // ...
};

解决此问题的更优雅的方法是使用 JSON 语法将未命名对象的权限传递给 UserData.push:

UserData.push({
     firstname:tempUserData[0],         
     lastname:tempUserData[1],
     // ...
});
于 2013-09-27T14:31:00.827 回答
1

您需要创建一个对象,UserData[i]否则您无法将属性固定到它。

var UserData = [];

function SplitDatabase(result){
  var RawUsers = result.split('-');
  for (var i = 0, l = RawUsers.length; i < l; i++) {
    var tempUserData = RawUsers[i].split('.');
    UserData[i] = {};
    for (var x=0, xl = tempUserData.length; x < xl; x++) {
      switch (x) {
      case 0:
        UserData[i].firstname=tempUserData[x];
        break;
      case 1:
        UserData[i].lastname=tempUserData[x];
        break;
      case 2:
        UserData[i].points=tempUserData[x];
        break;
      case 3:
        UserData[i].rank=tempUserData[x];
        break;
      }
    }
  }
}

小提琴

于 2013-09-27T14:35:58.180 回答