Tag: 数组

JQuery和JSON数组 – 如何检查数组是空还是未定义?

我需要将php数组传递给jquery来完成某些任务。 为SESSION创建php数组,然后为jquery创建json_encoded。 之后,我将该变量存储到window js命名空间,以便在我的jquery脚本中使用该数组。 if(isset($_SESSION[‘mySession’])){ $json_array = json_encode($php_array); } 我需要做的是在做任何事之前检查这个数组是否存在/是空/未定义。 check子句对’undefined’操作数成功,但对其余操作不成功。 如何在jquery中检查数组是否为空? 这是初始化后json_encoded数组的输出,当$ php_array中没有任何元素时: string ‘[“”]’ (length=4) 这是jquery: $(function() { var results = $(‘#results’); var js_array = window.json_from_php; var count = js_array.length; if ((typeof window.json_from_php === ‘undefined’) || (js_array === null) || (jQuery.isEmptyObject(js_array)) || (count === 0)) { $(‘Array is empty.’).appendTo(results); } else { jQuery.each(js_array,function(key,val){ […]

如何在jQuery中解析JSON数组?

编辑我检查了jQuery文档,并使用$ .ajax指定的json数据类型返回一个评估的javascript对象,所以eval()不是这里的答案。 无论如何,我知道,因为我能够解析单个JSON对象,而不是数组。 问题是$ .each-ing我的方式通过他们:) 我已经遵循了将jQuery中的JSON数组解析为字母的语法,但由于某种原因它不起作用。 我使用$ .ajax获取数组,指定了正确的数据类型,并且在Firebug中可以看到我的PHP脚本的响应是[]。 然而,当我尝试使用$ .each迭代数组时,当我尝试console.log数组的各个部分时,我得到的都是未定义的值。 这是我的PHP脚本制作和编码数组的地方: if(mysqli_num_rows($new_res) > 0) { $messages = array(); while($message_data = mysqli_fetch_assoc($query_res)) { $message = array( ‘poster’ => $message_data[‘poster’], ‘message’ => $message_data[‘message’], ‘time’ => $message_data[‘time’] ); $messages[] = $message; } echo json_encode($messages); } else if(mysqli_num_rows($new_res) == 0) { $message = array( ‘poster’ => ”, ‘message’ => […]

如何将数组拆分为两个子集,并使数组的子值总和尽可能相等

我真的需要一个算法大师! 所以事情就是我得到了一个像这样的数组: [ [870, 23] [970, 78] [110, 50] ] 我想将它拆分,所以它看起来像这样: // first array [ [970, 78] ] // second array [ [870, 23] [110, 50] ] 所以现在,为什么我想要它看起来像这样? 因为我想保持子值的总和尽可能相等。 所以970约为870 + 110约为23 + 50 。 所以在这种情况下它很容易,因为如果你只是拆分它们而只看第一个子值它已经是正确的但我想检查它们并保持它们尽可能相等,这样它也可以使用一个有100个子arrays的数组! 所以,如果有人能告诉我我可以编程的算法,那真的很棒! 秤: 数组中的~1000个元素(子列表) 元素是最多10 ^ 9的整数 我正在寻找一个“足够接近的解决方案” – 它不一定是最合适的解决方案。

jquery推送制作多维数组

我看过其他类似的post没有任何帮助,它们都是从已经制作的多维数组开始的,我想通过使用.push神奇地制作一个。 我的arrays: ItemsArray.push({ RoomName : RoomName, Item : {//this is where I want the multi-array } }); 我尝试使用: ItemsArray.Item.push{ stuff:morestuff }但它停止说’ItemsArray.Item’没有定义……这显然是荒谬的? 还试过: ItemsArray[1].push{}同样的错误…… 当然这肯定是一个愚蠢的简单问题。 谢谢!

为什么来自我的循环的警报总是返回最后一个值,而不是每个迭代值?

我有一些按钮,存储在一个数组中。 然后我循环遍历该数组,为每个按钮添加一个click事件。 每次单击都会提醒i的值。 我希望值为3等等,但在案例3它们总是作为一个值返回。 你能解释为什么会发生这种情况以及如何解决它吗? 请看这个jsFiddle 。 代码如下: var theButtons = [‘.button.one’, ‘.button.two’, ‘.button.three’]; for (i=0; i<theButtons.length; i++) { $(theButtons[i]).click(function () { alert(i); // always returns 3 }); } 请尽可能简单明了地解释它 – 我在Javascript和编程方面有点初学者。

jQuery如何创建Array-Objects?

起初我以为它只是在返回它之前将obj [0],obj [1],obj [2]等分配给jQuery对象,并且手动分配长度。 但不,因为console.log记录数组而不是对象。 我快速浏览了jQuery源码,但由于我不熟悉它,我没有轻易破解它。 jQuery.makeArray首先弹出,但事实certificate它与我正在寻找的相反,你实际上通过使用它失去了对象方法。 我的第一个猜测是首先启动数组,然后将对象中的所有属性和方法复制到它。 有没有jQuery源代码经验的人对此有明确的答案?

JQuery Unique()函数无法正常工作

我正在开发一个允许用户选择多个“卡片”的界面。 每张卡都有一个“数据名称”属性,也可能有相应的菜单项。 如果他们在主视图中选择了卡片,它也会突出显示菜单项。 点击某些内容后,我会将“selected”类添加到其中。 然后,我获取所有“选定”项目并计算唯一数据名称属性以获取所选实际项目的数量。 选择最多5个项目时,这非常有效。 由于某种原因,在第6项上,unique()函数似乎停止正常工作。 我无法用jsfiddle复制这个问题,但代码有点复杂,因为本地我也在处理“类型”,但我认为这与问题无关。 所以这里是我选择第5项后相关数组的一些截图。 在这里您可以看到所有选定的项 正如预期的那样,有10个。 此断点就在unique()调用之前。 在这里您可以看到唯一的选定项 正如预期的那样,有5个。 然后我选择第6个… 12,正如预期的那样…… Aaand现在我们有一个神秘的复制品! 为什么??? 这种情况始终如一 每一次。 请注意, 我最后选择的项目并不重要 。 我添加了多达10个虚拟物品,它总是第6个被弄糊涂了。

在javascript或jquery中比较两种不同的数组类型

我有两种不同的数组类型。 其中一个字符串数组是另一个对象数组; stringArray = [“P1”, “P2”, “P3”]; objectArray = [{ P: “P1”, PO: 5}, { P: “P3”, PO: 10}]; 我想将对象数组放到表中。 字符串数组元素必须是表头。 如果对象数组有P == “P1″则将5放入单元格。 否则将空单元格排成行。 我尝试了这个,但这放了多个空单元格。 这是我的代码“tKeys”= stringArray,“Ciktilar”= objectArray var baslikEklendiMi = false; var satirEkle = function(CalismaTipi, Ciktilar, tKeys) { var satir = ” + CalismaTipi + ”; $.each(tKeys, function (i, val) { if (baslikEklendiMi […]

在jquery中创建一个关联数组

这是我到目前为止, 鞋类型是boots, wellingtons, leather, trainers (in that order) 我想迭代并分配值,所以我有类似的东西 var shoeArray = { boots : ‘3’, wellingtons: ‘0’, leather : ‘1’, trainers: ‘3’}; 目前我只得到一个{3,0,1,3}的数组,我可以使用它,但它不是很有帮助。 function shoe_types() { var shoeArray = []; $(‘[type=number]’).each(function(){ $(‘span[data-field=’+$(this).attr(‘id’)+’]’).text($(this).val()); shoeArray.push ( parseInt($(this).val()) ); }); return shoeArray; }

将php关联数组转换为javascript对象

我正在尝试将中文单词作为键加载,将它们的英文翻译作为数据库中的值加载到php数组中,以便我可以在JavaScript的客户端使用它们。 所以我将PHP密钥:值对加载到JavaScript数组中,并尝试将结果输出为键值对,如下所示: stuff : Ni, You stuff : Ta, Him or Her stuff : Wo, I 中文和英文单词加载在关系数据库中。 PHP : $wordsArray = array(); while ($row = $sql->fetch_assoc()) { $wordsArray[$row[‘chinese’]] = $row[‘english’]; } Javascript :这里我希望$ .each以字符串forms输出密钥,而不是数字索引。 所以,当我尝试var words = []; 作为一个数组,我得到: stuff : 0, You stuff : 1, Him or Her stuff : 2, I 当我真的在寻找: stuff […]