2016-07-11 1 views
-1

Вот мой код;Как искать несколько переменных в файле javascript и concat?

function concatVar(data) { 
    for (var data in window) { 
     if (window[data]== data.match(data+(/\[[0-9]+\]/))) 
      return data; 
    } 
} 

var data1 = [{ x: 290, y: 160}, {x: 391, y: 160}, {x: 391, y: 160}] 
var data2 = [{x: 200, y: 160}, {x: 193, y: 160}, {x: 421, y: 260}] 
var data3 = [{x: 200, y: 160}, {x: 193, y: 160}, {x: 421, y: 260}] 

var data = data1.concat(data2, data3) 

concatVar(); 

Я хотел бы иметь возможность поиска через файл JavaScript и найти переменные данные [+] число, а затем CONCAT их в одну переменных.

Я изо всех сил пытаюсь найти способ для этого? И я не уверен, что было бы полезно использовать цикл for внутри окна?

Любые советы очень ценятся!

веселит

+5

Зачем использовать «dataX» в первую очередь? Почему не * массив * 'data' с' data [0] ',' data [1] 'etc ...? – deceze

+0

Это работает только в том случае, если переменные являются глобальными. Он не будет работать, если интерпретатор находится в строгом режиме и не будет работать, если переменная объявлена ​​внутри закрытия. – evolutionxbox

+0

Извините, но если ваш сайт требует, чтобы вы использовали окно для передачи переменных, у вас очень плохой дизайн. В этом конкретном случае вы можете захотеть захватить Object.keys() из окна, предоставив вам массив со строками, содержащими все имена переменных в виде строк. Затем вы можете зациклиться на этом aarray с вашим регулярным выражением, чтобы cehck fi это переменная, в которой вы нуждаетесь. Также возврат внутри цикла for завершит цикл. – Shilly

ответ

0

Регулярного выражения следует использовать, скорее всего /var\s+data\d+\s+=\s*[\w\W]+;/ig (который будет пытаться соответствовать всем переменным, которые выглядят как те, что вы в комплекте поставки). Я бы лично попытался заменить все, что не соответствует этому, а затем использовать другое регулярное выражение для извлечения фактических назначенных значений после выполнения некоторого разделения для обработки по одному за раз: oneOfThoseMatchedVariables.replace(/data\d+\s+=\s*/i, '').

oneOfThoseMatchedVariables должна быть строка выглядит как "var data1 = [{ x: 290, y: 160}, {x: 391, y: 160}, {x: 391, y: 160}];"

Все это предполагается, что вы уже разобран весь файл, что вам необходимо, и хранят его, чтобы выполнить все это на нем.

Смежные вопросы