2016-04-11 5 views
1

Ich habe einige Werte in Array wie folgt (arr1); Ich muss eine Art einzigartige ArrayList machen, die sammeln und eine neue Liste mit Werten vor erstellen muss "~" Wenn der Wert vor dem "~" in der neuen Liste ist, muss der Wert nach "~" an vorhandenen Wert von Array anhängen.Array-Liste in XPages wie zu analysieren

var arr1:Array = new Array(); 
arr1[0] = "test 1 ~ 781.102"; 
arr1[1] = "test 2 ~ 981.112"; 
arr1[2] = "test 2 ~ 191.222"; 
arr1[3] = "~ 431.332"; 
arr1[4] = "test 1 ~ 121.332"; 
arr1[5] = "test 3 ~ 121.442"; 
arr1[6] = "test 3 ~ 201.552"; 

Neue Liste dies sein sollte ...

var nArr:Array = new Array(); 
    nArr[0]= "test 1 - (781.102,121.332)"; 
    nArr[1]= "test 2 - (981.112,191.222)"; 
    nArr[2]= "test 3 - (121.442,201.552)"; 
    nArr[3]= "undefined - (431.332)"; 
+1

Dies ist kein "Bitte schreibe meinen Code" - Community. Zeigen Sie, was Sie versucht haben, und sagen Sie uns, warum Sie versagt haben. Zeige uns Code, der nicht funktioniert hat, und wir werden helfen. Aber niemand hier wird Code für dich schreiben ... –

+0

Danke. Ich bin ein neuer in Javascript. Ich möchte nicht, dass jemand meinen Code schreibt. Ich weiß nicht, was ich versuchen soll, deshalb habe ich gefragt. Was ich brauche, ist nur eine logische Erklärung. –

+0

Umleiten Sie mich einfach zu platzieren, wo ich anfangen soll ... –

Antwort

2

Verwenden Sie .split("~"), um Teilstrings geteilt durch ~ zu trennen. Das Ergebnis ist ein Array.

Verwenden Sie ein JavaScript object mit Schlüsseln und Werten. Der Schlüssel ist "Test 1", "Test 2", ... und der Wert ist ein JavaScript array. Fügen Sie für jedes Element von arr1 die Anzahl hinzu, die für den angegebenen Schlüssel verwendet werden soll.

schließlich ein Array von Ihrem Objekt erstellen und die Array-Werte in "(..., ...)"

Ihr Code wie folgt aussehen würde konvertieren:

var obj = {}; 
for (var i = 0; i < arr1.length; i++) { 
    var keyAndValue = arr1[i].split("~"); 
    var key = keyAndValue[0].trim(); 
    var value = keyAndValue[1].trim(); 
    var array = []; 
    if (key in obj) { 
     array = obj[key]; 
    } 
    array.push(value); 
    obj[key] = array; 
} 
var nArr = []; 
for (key in obj) { 
    nArr.push(key + " - (" + obj[key].toString() + ")"); 
} 
2

Was Sie verwenden sind nicht Arraylisten, sie sind Arrays.

Um zu vermeiden, ein Rad neu zu erfinden, suchen Sie im Web nach java.util.ArrayList, wenn Sie eine ArrayList bearbeiten möchten.

Der beste Rat ist, Java-Konstrukte anstelle von SSJS-Arrays zu verwenden. Sie sind im Internet vielseitiger dokumentiert (weil sie über XPages hinaus verwendet werden) und werden Sie in der Zukunft mit solchen Dingen in der Java-Geschäftslogik vertraut machen. Schau dir Listen und Sets und Maps an.

Was Sie wirklich wollen, ist keine eindeutige Liste, es ist eine Karte von eindeutigen Werten (links von einer Tilde), gefolgt von einer verketteten Folge von Einträgen, die diesen Schlüssel verwenden.

+0

Ich habe keine Java Experince :( Ich bin neu hier .. Ich meine JavaScript und XPages –

+1

Sie brauchen keine Java-Erfahrung, um Java-Objekte in XPages ServerSide zu verwenden JavaScript: Wie Paul anmerkt, ist das wahrscheinlich deine beste Wette. Ich habe ein Video, das dir bei der Verwendung von Java Object in SSJS helfen könnte. Http://notesin9.com/index.php/2011/07/11/notein9-ee-009- using-java-hashmaps-und-treemaps-with-xpages/ –

+0

Sie müssen keine Java-Klassen verwenden, da JavaScript-Objekte und -Arrays Ihnen die Funktionalität bieten, die Sie suchen. –