Ich habe ein bisschen Mühe beim Analysieren der Ergebnisse eines Arrays und Drucken auf der Konsole. Es ist eigentlich ein zweiteiliges Problem. Wenn ich das Array erstelle, fügt es den Ergebnissen "undefined" hinzu. Wenn ich versuche, die einzelnen Strings im Array zu durchlaufen, parst es nicht, sondern gibt nur das vollständige Array-Objekt zurück.Probleme beim Analysieren der Ergebnisse von Array haben
Ich versuche, alle in einer Listenansicht ausgewählten Feldwerte zu sammeln und sie als separate Elemente in eine andere untergeordnete Liste zu schreiben. Wenn Ergebnisse in einer Konsole angezeigt werden, wird dies als Objekt-Array angezeigt. Wenn ich den Typ der Methode dagegen ausfühle, glaube ich, dass es als String angezeigt wird.
Um zu wiederholen, warum bekomme ich undefined und warum ist mein Array nicht korrekt zu drucken. Im Folgenden finden Sie ein Beispiel für das, was bisher zurückgegeben wurde (wenn zwei Datensätze ausgewählt wurden) und meinen Code.
Ergebnisse:
undefinedDaffy DuckBugs Hase
undefined
Code:
// Grabs selected items from getSelected function and passes parameters to writeSelected function
function callAccepted() {
getSelected().done(function(varObjects) {
for (var k in varObjects) {
console.log(varObjects[k]);
}
}); // End getSelected
} // End callAccepted
// Grabs selected items, accepts input from callAccepted or callRejected functions
function getSelected() {
var dfd = $.Deferred(function(){
var ctx = SP.ClientContext.get_current();
var clientContext = new SP.ClientContext();
var targetList = clientContext.get_web().get_lists().getByTitle(ListName);
var SelectedItems = SP.ListOperation.Selection.getSelectedItems(ctx);
var items = [];
var arrItems = [];
for (var i in SelectedItems) {
var id = SelectedItems[i].id;
var item = targetList.getItemById(id);
clientContext.load(item, "Title");
items.push(item);
} // End for
clientContext.executeQueryAsync(
function(){ // Return to button click function
var itemLength = 0;
var itemObjects = [];
for (var j = 0; j < items.length; j++) {
itemObjects = items[j].get_item("Title");
itemLength += itemObjects;
arrItems.push(itemObjects);
}
dfd.resolve(arrItems, itemLength);
},
function(){ // Return to button click function
dfd.reject(args.get_message());
}
); // End ClientContext
}); // End dfd
return dfd.promise();
} // End getSelected
Das war genau der Stupser, den ich brauchte. Um zu erklären, warum ich "var itemObjects" in 2 Zeilen getrennt habe, hatte ich vergessen, dass, als ich ursprünglich den Code wie oben beschrieben zusammengeführt habe, das Skript aus einem unbekannten Grund vollständig gelöscht wurde. Als ich es wieder getrennt habe, hat es angefangen zu arbeiten. Ich habe es auch durch JSHint laufen lassen und bin auch nicht auf Fehler gestoßen. Ich habe bearbeitet, um den korrekten Arbeitscode zu veröffentlichen, für mich sowieso ... – Ghoztrider