【发布时间】:2016-08-25 22:07:46
【问题描述】:
我正在尝试创建一个包含 6 个 JSON 响应的多维数组。我一直在寻找其他人的帮助:multidimensional array in angular
但是当我为多维数组测试控制台日志时,我得到输出“Stat array: undefined”,只调用整个数组的这个索引就会返回 [object Object]。
$scope.pokeArray = new Array(11);
$http.get("http://pokeapi.co/api/v2/pokemon/"+searchedName +".json")
.success(function (response)
{
//Get first form FORMS array, assign name
$scope.pokeArray[0] = response.forms[0].name;
//13 ID
$scope.pokeArray[1] = response.id;
//10 Height
$scope.pokeArray[2] = response.height;
//7 Sprites
$scope.pokeArray[3] = response.sprites.front_default;
$scope.pokeArray[4] = response.sprites.front_shiny;
//3 Stats 5-11
//Speed
$scope.pokeArray[5] = response.stats[1].base_stat;
//Index 6 = Array of 6
$scope.pokeArray[6] = [
{
speed : response.stats[0].base_stat,
spDefense: response.stats[1].base_stat,
spAttack : response.stats[2].base_stat,
defense : response.stats[3].base_stat,
attack : response.stats[4].base_stat,
hp : response.stats[5].base_stat
}];
console.log("Name: " + response.forms[0].name);
console.log("Height: "+ response.height);
console.log("ID: " + response.id);
console.log("Array: " + $scope.pokeArray);
console.log("speed: " + response.stats[1].base_stat);
console.log("Stat array: " + $scope.pokeArray[6].speed);
}
);
}
如您所见,我的前 5 个数组都包含直接响应,并且效果很好,我已经使用控制台日志对其进行了测试,并在我的 html 视图中使用了这些信息。
目前,最后一个控制台日志返回“Stat array: undefined”。也许,我应该以不同的方式在多维度数组中进行响应,但我不确定,我想也许如果我尝试使用 [6][0] 来获得可行的速度?但这会导致错误。
如果有人能告诉我是我的数组还是 JSON 处理导致了问题,那真的会帮助我。谢谢。
【问题讨论】:
-
能看到
response的序列化值吗? -
你得到
[object Object].因为你试图连接一个对象和一个字符串。发生这种情况时,将调用toString()方法,并且由于您的对象没有自定义 toString 方法,因此它使用默认方法,该方法将对象类型作为字符串提供给您。 -
@PatrickEvans 所以,如果所有数据都是字符串类型,ToString() 将被调用并且没有问题,所以输出不会是 [Object object]?
标签: javascript arrays angularjs json multidimensional-array