我正在尝试动态构建一个javascript数组,其中_tags是一个全局定义的数组,然后通过ajax请求将其发送到php。基本上我需要uid作为键,x,y作为子数组。在PHP中它看起来像
$arr[$uid] = array('x'=>$x,'y'=>$y);
但我很难在javascript中找出这样的数组,这就是我拥有的东西
function add_tag_queue(uid,x,y){
var arr = new Array(3);
arr[0] = uid;
arr[1] = x;
arr[2] = y;
_tags.push(arr);
}
答案 0 :(得分:4)
只要它们是唯一的,这就可以了 一个条目被添加到数组中, 我在其他地方添加了多个值 这个函数会运行一些 时间,然后我想发送 整个阵列,但这似乎只是 用逗号添加所有内容 分隔符。
我不确定你到底在说什么。我之前给出的第二个示例假设每个uid
都有一个x,y对,但对uid
中有多少_tags
没有限制。这就是为什么var _tags = {};
是我们的函数 - 所以它是一个全局变量。
以下修改将允许您为每个uid
提供多个x,y对:
function add_tag_queue(uid,x,y){
/*
* detect if _tags[uid] already exists with one or more values
* we assume if its not undefined then the value is an array...
* this is similar to doing isset($_tags[$uid]) in php
*/
if(typeof _tags[uid] == 'undefined'){
/*
* use an array literal by enclosing the value in [],
* this makes _tags[uid] and array with eah element of
* that array being a hash with an x and y value
*/
_tags[uid] = [{'x':x,'y':y}];
} else {
// if _tags[uid] is already defined push the new x,y onto it
_tags[uid].push({'x':x, 'y':y});
}
}
这应该有效:
function add_tag_queue(uid,x,y){
_tags.push([uid, x,y]);
}
如果您想要uid
作为密钥,那么您需要使用对象/哈希而不是array
var _tags = {}; // tags is an object
function add_tag_queue(uid,x,y){
_tags[uid] = {'x':x,'y':y};
}
答案 1 :(得分:0)
你总是可以在php和json_encode中构建它。
答案 2 :(得分:0)
您正在寻找在Javascript中实现关联数组。虽然Javascript不支持关联数组,但Javascript对象可以大致相同。
请改为尝试:
_tags = {}
function add_tag_queue(uid,x,y){
_tags[uid] = {x:x, y:y};
}
_tags现在是一个对象,你将在uid键上添加一个新对象。同样,x,y对存储在对象中。第一个x是键,第二个是值。澄清一下,你可以这样写:
function add_tag_queue(uid,xValue,yValue){
_tags[uid] = {x:xValue, y:yValue};
}
答案 3 :(得分:0)
它看起来与你给出的PHP示例非常相似:
function add_tag_queue(uid,x,y){
_tags[uid] = {x: x, y: y};
}
答案 4 :(得分:0)
这是我在JS中创建多维数组的方法。我希望这会有所帮助。
var arr= [];
arr[uid] = new Array();
arr[uid]["x"] = xvalue;
arr[uid]["y"] = yvalue;