Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wfrsilva

Array Bi-Dimensional vale a pena?

Recommended Posts

Bom dia a todos.

 

Estou com um problema aqui, preciso formatar palavras enviadas de diversas fontes.

Uma forma foi reaproveitar um script que ja estava pronto aqui.

 

Tenho dois arrays:

 

asso = Assinatura Original

assa = Assinatura Alterada

 

uso a funcao:

(...)

assr[myCounter] = alterarAssinatura(asso[myCounter],assa[myCounter]);

(...)

function alterarAssinatura(original, alterado){
//find/change preferences - LIMPAR
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

//Search the document for the string "Text".
app.findTextPreferences.findWhat = original;
app.changeTextPreferences.changeTo = alterado;
var contador = 0;
do{
//Set the find options.
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
var myFoundItems = myDocument.findText();
//alert("Found " + myFoundItems.length + " instances of the search string.");
contador = contador + myFoundItems.length;
myDocument.changeText();
}while(myFoundItems!=0);
return contador;
}

(..)

 

O Problema esta nos arrays, devido ao fato de estarem grandes, uma linha trocada, troca as informacoes:

 

 

var asso = [
"^p ", 
"^p “",
"^p“ ",
":_",
"DE FEVEREIRO DE",
"DE JANEIRO DE", 
(...)

];

var assa = [
"^p",
"^p“",
"^p“",
": _", 
"de Fevereiro de", 
"de Janeiro de", 
(...)
];

 

E ja tem mais de 50 itens.

Assim se eu errar uma linha, erro tudo da linha para baixo.

 

minha ideia com array bi-dimensional era manter o original junto com o alterado, sendo facil vizualiza-los e compara-los.

 

Seria assim a sintaxe?

 

var ass = new array {

(...)

[ "DE FEVEREIRO DE", "de Fevereiro de", ] , 
[ "DE JANEIRO DE", "de Janeiro de", ] ,

(...)

};

(...)

assr[myCounter] = alterarAssinatura(ass[0][myCounter],ass[1][myCounter]);

 

Alguma ideia melhor?

 

Obrigado

 

 

 

DEU ERRO :

 

 

var ass = {
["^p ", "^p"] , 
["^p “","^p“"] ,
["^p“ ","^p“"] ,
[":_",": _"] ,

 

JavaScript Erro!

 

Numero do Erro 17

Sitrng de erro: Nome de variaavel esperado

 

Origem: ["^p ", "^p"] ,

Texto Causador do erro: [

 

 

Estou usando o javascript no Adobe InDesign

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você quer é uma array associativa, que na realidade não existe em Javascript. Você pode usar um objeto.

 

Sintaxe:

{
   'key' : 'value'
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou assim:

var ass = new Array {
'original' : 'alterado',
["^p ", "^p"] , 
["^p “","^p“"] ,
["^p“ ","^p“"] ,
[":_",": _"] ,
};

 

Mas ainda nao esta funcionando. :upset::(

 

Numero Erro:25

String de erro: Esperado: ;

Origem: var ass = new Array{

Texto Causador do erro: {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é assim...

 

A forma que você deveria fazer era assim:

var ass = {
  '^p ' : '^p',
  '^p “': '^p“',
  'etc' : '...'
};

 

Estude Javascript, pela suas suposições, você está precisando estudar a sintaxe :seta: Javascript Reference - MDN, Javascript Guide - MDN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai ai, eh mais dificil do que eu imaginava.

 

Criar ate criou:

var ass = {
'^p ': '^p' , 
'^p “':'^p“',
'^p“ ':'^p“' ,
':_':': _' ,

'ano2d + ^p^pBEATRIZ ' : 'ano2d + ^pBEATRIZ ' , 
'ano2d + .^p^pBEATRIZ ' : 'ano2d + .^pBEATRIZ ',

'Centro Administrativo Municipal de Concórdia.^p^pJOÃO GIRARDI' : 'Centro Administrativo Municipal de Concórdia.^pJOÃO GIRARDI' ,
'Cristiano Carvalho Nunes^pSecretário' : 'CRISTIANO CARVALHO NUNES^pSecretário' ,
'CURITIBANOS, ' : 'Curitibanos, ' , 
'DE FEVEREIRO DE' : 'de Fevereiro de' ,
'DE JANEIRO DE' :  'de Janeiro de'
};

alert(ass[0][0]);

 

Mas achei que :

ass[0][0] = '^p '

ass[0][1] = '^p'

 

e assim por diante, mas esta aparecendo o erro no alert:

Numero de erro : 21

Undefined nao é um objeto

Origem: alert(ass[0][0]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto porque a forma como você está fazendo o loop não está certa.

Como se trata de um objeto, você pode iterar pelas suas propriedades, usando for .. in

var ass = {
'^p ': '^p' , 
'^p “':'^p“',
'^p“ ':'^p“' ,
':_':': _' ,

'ano2d + ^p^pBEATRIZ ' : 'ano2d + ^pBEATRIZ ' , 
'ano2d + .^p^pBEATRIZ ' : 'ano2d + .^pBEATRIZ ',

'Centro Administrativo Municipal de Concórdia.^p^pJOÃO GIRARDI' : 'Centro Administrativo Municipal de Concórdia.^pJOÃO GIRARDI' ,
'Cristiano Carvalho Nunes^pSecretário' : 'CRISTIANO CARVALHO NUNES^pSecretário' ,
'CURITIBANOS, ' : 'Curitibanos, ' , 
'DE FEVEREIRO DE' : 'de Fevereiro de' ,
'DE JANEIRO DE' :  'de Janeiro de'
};

// guarda os valores trocados
var alterados = {};

// trocando
for(var key in ass){
 alterados[key] = alterarAssinatura(key, ass[key]);
}

 

Ps.: que nome de variável você foi escolher hein? hehehe

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.