将变量传递到正被推入现有数组的字符串中

时间:2011-05-25 00:13:26

标签: javascript django arrays

我正在尝试将变量传递给字符串,而字符串本身被推送到现有的数组中,如下所示:

var myVar = 'slug';

myArray.push(['item one', '/path/to/' + myVar + '/']);

这根本不起作用。我可以看到正确的值被分配给myVar;但是,数组中的myVar甚至不被识别为变量。

这看起来很容易,但我显然错过了一些东西。

感谢您的帮助。

编辑:毕竟不是Javascript问题。

正如亚历克斯所说,这绝对通常有效。 (是的,这是一个现有的数组。)

但是,我忽略了提到push方法包含在Django模板逻辑中,只能在我的dev实例上运行,如下所示:

{% ifequal INSTANCE 'DEVELOPMENT' %]
myArray.push(['item one', '/path/to/' + myVar + '/']);
{% endifequal %}

我没有提到逻辑,因为我没有看到它是如何干扰的。我已经确认:

  1. 逻辑的一切都按预期行事
  2. INSTANCE确实等于'发展'
  3. 并且在源代码中可以看到该Javascript行,如果逻辑行为不当则不会出现这种情况。
  4. 但是,如果我删除了那个Django逻辑,那么使用Javascript的所有内容都可以正常工作。

    由于某种原因,这个服务器端逻辑阻止我将任何外部值传递到数组,客户端或服务器端。

    作为一项实验,我试过了......

    myArray.push(['item one', '/path/to/{{ block slug }}undefined{{ endblock }}/']);
    

    ...在儿童模板中使用以下内容。

    {{ block slug }}slug{{ endblock }}
    

    同样的事情发生了。使用模板逻辑后,值为/path/to/undefined。没有它,根据需要,值为/path/to/slug

    为什么发生这种情况对我来说是一个谜。我可以解决它,但如果有人有任何想法,我很乐意听到它们。

    再次感谢。


    Noob提问:关于改变帖子标题的礼节是什么?

3 个答案:

答案 0 :(得分:3)

It definitely works

也许您打算将Arrayconcat()联系起来?目前,您正在将新Array作为成员推送到现有Array,从而产生多维Array

我还假设myArray已指向Array。如果没有,请执行var myArray = []

答案 1 :(得分:0)

您需要在使用push方法之前实例化数组:

var myVar = 'slug';
var myArray=new Array();
myArray.push(['item one', '/path/to/' + myVar + '/']);

答案 2 :(得分:0)

什么不起作用?

您正在数组中创建一个数组。

您需要访问新的数组元素,如下所示:

myArray[0][1] // this is "/paht/to/slug/

重新阅读你的评论,听起来你正试图访问数组的属性:

myArray.myVar

在javascript中,如果你想要一个命名元素,你需要使用一个对象。

myObject = {};
myObject.myVar = "/path/to/slug/";
alert(myObject.myVar) // "/path/to/slug/"

或者您可以将其作为属性直接添加到数组中:

myArray.myVar = "/path/to/slug/";
alert(myArray.myVar);