从JavaScript文件名数组创建变量

时间:2011-07-16 16:38:36

标签: javascript arrays variables

我有一个带有文件名(及其目录位置)的JavaScript数组(最初是通过使用PHP在目录中创建PHP文件数组然后转换为JS数组获得的)。我想使用这个数组生成与它们的值同名的单个变量。

例如,这是数组值之一,“collada / basement / zones / basementPCroom.dae”。我想用它来创建一个名为“basementPCroom”的变量,它保存值“collada / basement / zones / basementPCroom.dae”。与数组中的所有其他值相同。

我想这样做的原因是因为每次添加或删除文件时都会单独更改每个文件需要永久保存,我需要它们具有这些特定的名称,这样我才能在以后轻松找到我想要的内容。 / p>

感谢您的帮助!

以下是导致此问题的代码:

<?php
$zones = glob('collada/first/zones/*dae');
?>
var zones = <?php echo json_encode($zones) ?>;

3 个答案:

答案 0 :(得分:0)

一种方法是这样做(可能有更好的方法来实现这一点):

var filenames = filenames || {};

for(var i = 0, len = array.length; i < len; i++) {
   filenames[getName(array[i])] = array[i];
}

function getName(str) {
   var parts = str.split('/');
   return parts[parts.length-1].split('.')[0];
 }

更新:合并我的更新以创建一个对象来保存fielnames,而不是污染全局namesapce。

答案 1 :(得分:0)

如果你想做服务器端的工作,你可以这样做:

$zoneArray = glob('whatever');

//grab keys
$grabFileName = function($val){
   return substring($val, strrchar($val, '/'), strchar($val, '.'));
}
$zoneKeys = array_map($grabFileName, $zoneArray);

//apply keys to array
$zoneHash = array_combine($zoneKeys, $zoneArray);

//associative arrays become objects
json_encode($zoneHash);

答案 2 :(得分:0)

不要试图“创建变量”。而是把所有东西放在一个对象中,也就是关联数组:

var paths = {};
paths[a_file_name] = its_directory;

这使用了这样一个事实:您可以使用括号表示法而不是点符号来在Javascript中使用对象

obj['foo']
//is the same as
obj.foo