2016-04-18 11 views
1

Wie kann ich rational ersten Element des Arrays zu ersten des zweiten Arrays und so weiter concat? Grundsätzlich automatisieren console.log hier ist der Code:Concat erstes Element des Arrays zum ersten itiem des zweiten Arrays JavaScript

$("button#search").on("click", function(){ 
var inputVal = $("input#text").val(); 
$.getJSON("https://en.wikipedia.org/w/api.php?action=opensearch&search=" + inputVal +"&limit=5&namespace=0&format=json&callback=?", function(json) { 
    var itemName = $.each(json[1], function(i, val){  
    }) 
    var itemDescription = $.each(json[2], function(i, val){ 
    }) 
    var itemLink = $.each(json[3], function(i, val){ 
    }) 
    console.log(itemName[0] + " " + itemDescription[0] + " " + itemLink[0]); 
    console.log(itemName[1] + " " + itemDescription[1] + " " + itemLink[1]); 
    console.log(itemName[2] + " " + itemDescription[2] + " " + itemLink[2]); 
    console.log(itemName[3] + " " + itemDescription[3] + " " + itemLink[3]); 
    console.log(itemName[4] + " " + itemDescription[4] + " " + itemLink[4]); 
    })//EOF getJSON 
});//EOF button click 
+1

Wenn alle 3 Arrays die gleiche Anzahl an Elementen haben, können Sie eine for-Schleife für die Länge verwenden und den Iterator 'i' verwenden, um auf Array-Wert nach Index zuzugreifen. –

Antwort

1

Ich glaube, das ist das, was Sie suchen:

for (var i = 0; i < itemName.length; i++) { 
    console.log(itemName[i] + " " + itemDescription[i] + " " + itemLink[i]); 
} 
+1

Schön dich wieder zu sehen Hodges :) –

+1

Vielen Dank! –

0

Mit es6 Sie folgendes tun:

(in Ihrem getJSON Rückruf):

function (json) { 
    const [value, optionsJ, descriptionsJ, linksJ] = json; 
    let whatIwant = []; 

    // choose one to loop through since you know they will all be the same length: 
    optionsJ.forEach(function (option, index) { 
     whatIwant.push({option: option, description: descriptionJ[index], link: linksJ[index]}); 
    }); 

    // use whatIwant here** 
} 

Ihr neues whatIwant Array enthält dann Objekte für jeden Satz.

1

Wenn Arrays die gleiche Länge haben, Sie map

var result = $.map(json[1], function(i, val){ 
    var row = val + " " + json[2][i] + " " + json[3][i]; 
    console.log(row); 
    return row; 
} 

Sie können auch, dass result später verwenden verwenden könnte, zum Beispiel

+0

Gute Lösung, aber ich kann nicht updaten, bis Sie die Anweisung "Grundsätzlich console.log automatisieren" vom OP adressieren. – mhodges

+1

@mhodges danke, behoben :) – isvforall

Verwandte Themen