gpt4 book ai didi

javascript - $.each 中的数组递增

转载 作者:行者123 更新时间:2023-12-01 05:49:07 25 4
gpt4 key购买 nike

我想将一组循环遍历包含 k:v 对对象的数组的 $.each 语句组合成一个 $.each ,我可以增加。

从 PHP 返回的数组结构:包含对象的数组的数组。

enter image description here

PHP:这是运行然后发送回 JavaScript 的内容。

array_push($allDataArray, $completedLevelData, $completedQuestData, $completedNPCData);

JavaScript:

我最初使用单独的 $.each 来循环遍历每个对象数组。但我想将这些 $.each 语句合并为更小的内容:

function updateData (functionToRun, callback) {  
$.getJSON("phpscripts.php", {
"_player" : Player,
"_playerID" : UserID,
"_functionToRun" : functionToRun
},

function(result) {
var questIDs = [];

$.each(result[0], function (i, allData) {
$(".completedLevels").append("<br/>"+allData['levelname']);
});
$.each(result[1], function (i, allData) {
questIDs.push(allData['quest_id']);
$(".completedQuests").append("<br/>"+allData['quest_id']+ ", " + allData['questname']);
});
$.each(result[2], function (i, allData) {
$(".completedNPCs").append("<br/>"+allData['npc_name']);
});
etc...

为此,我只是要使用 for 循环并追加...但是 for 与每个不同,即使在他们是空的。例如,

for (obj in result) {
for (obj2 in result[obj]) {
console.log(result[obj][obj2]['levelname']);
}
}

给予:

mymap2 
mymap
(9) undefined
[]

所以即使没有数据它也会继续循环。我不希望它这样做。

话虽这么说,然后我尝试了 $.each,并尝试在循环遍历所有子数组时增加父数组。本质上模仿上面,但将所有 $.each 组合成一个 $.each,如下所示:

var k = 0, j = 0;
$.each(result[k], function (i, allData) {
//if you loop through all objects within parent object, move to next parent object
if (j == result[k].length) {
k++;
j=0;
}
j++;
etc...

但是一旦循环完所有result[0],它就会停止,而不增加k。知道如何做到这一点吗?

<小时/>

编辑:我尝试了下面的答案,但它仍然显示正在加载未定义:

for (var i = 0; i < result.length; i++) {
$.each(result[i], function (j, allData) {
$(".completedLevels").append("<br/>"+allData['levelname']);
});
}

附加以下内容:

已完成的关卡:

  • 我的 map
  • 未定义
  • 未定义
  • 未定义

最佳答案

您实际上并没有使用任何 JavaScript 来告诉浏览器您要在“$.each”命令完成一次后运行该命令。

将其放入 for 循环中:

for (var i = 0; i < result.length; i++) {
$.each(result[i], function (j, allData) {

// Do whatever you like in here

}
}

fiddle :http://jsfiddle.net/9fhj4/

编辑:郑重声明,如果您只是处理数组,则更好的方法是在两个语句中使用 for :

for (var i = 0; i < result.length; i++) {
for (var j = 0; j < result[i].length, j++) {

// Do whatever you like in here

}
}

再次编辑:为了回应您的评论,我尝试修改 fiddle 以更准确地表示您正在使用的数据结构:http://jsfiddle.net/9fhj4/2/

关于javascript - $.each 中的数组递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com