2016-09-29 2 views
0

У меня есть внешний .js с массивами.javascript use url as string для массива

test = [ 
{ 
    "name": "1" 
} 
test2 = [ 
{ 
    "name": "2" 
} 
]; 

Теперь я хочу использовать url для определения имени массива. Итак, если кто-то идет на test.html, он использует тестовый массив и test2.html test2 array.

Если я использую

var queryArray = window.location.search.substring(1); 

или

var queryArray = window.location.href 

или что-то подобное, а затем

document.getElementById("demo").innerHTML = queryArray.name; 

это не работает, потому что он, конечно, ищет массив queryArray, которого нет. Есть ли способ использовать URL-адрес в качестве идентификатора?

Я надеюсь, что вы можете понять точку ^^

THX для каждой идеи !!!

+1

связаны, возможно, дублировать? http://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable – Aaron

+1

Разве эта тема будет полезна? http://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-get-parameters –

+0

спасибо, я попробую эти два, если он работает, я удаляю свой пост THX !!! – Tidus

ответ

0

Если у вас есть возможность немного перестроить так, как Вы определяете «массивы» вы могли бы сделать что-то вроде этого:

// ============================= 
 
// Similar but a little more tidy 
 
// This also supports file names with characters like "-" or complete url strings 
 
// ============================= 
 
var dataItems = [ 
 
    {key : "test1", value: [{"name": "This is test 1"}]}, 
 
    {key : "test2", value: [{"name": "This is test 2"}]}, 
 
    {key : "js", value: [{"name": "This is the sandbox"}]} // This sandbox (I think) 
 
]; 
 
// ============================= 
 

 
// ============================= 
 
// You migth now use the full pathname as the data item key, 
 
// but if you wanted to use the "name" of the file you might do something like this. 
 
// ============================= 
 
var currentFileName = location.pathname.split("/").pop().split(".html")[0]; 
 
// ============================= 
 

 
// ============================= 
 
// You might want to do this in several steps to handle stuff like filter returning 
 
// no hits. 
 
// ============================= 
 
var dataItem = dataItems.filter(function(item){ return item.key === currentFileName;})[0]; 
 
// ============================= 
 

 
console.log(dataItem.value[0].name);

+0

это потрясающе !!! именно то, что я хочу. теперь я пытаюсь понять специфику написания массива. Спасибо огромное ! – Tidus