アレイの結果を解析してコンソールに印刷しようとすると、少し問題があります。それは実際には2つの部分の問題です。配列を構築すると、結果に「未定義」が追加されます。配列内の個々の文字列をループしようとすると、解析されず、完全な配列オブジェクトが返されます。トラブルの解析結果の配列
私がしようとしているのは、リストビューから選択したすべてのフィールド値を収集し、別の項目として別の子リストに書き込むことです。コンソールに結果を表示すると、オブジェクト配列として表示されます。私はそれに対して文字列として表示すると信じてtypeofメソッドを実行するとき。
私は未定義となっているのはなぜですか、なぜアレイが正しくコンソールに印刷されないのですか?以下は、これまでに返されているもの(2つのレコードが選択されている場合)と私のコードの例です。
結果:
undefinedDaffy DuckBugsバニー
未定義
コード:
// 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
これはまさに私が必要とした軽いものでした。 "var itemObjects"を2行に分けた理由を説明するために、私が最初にあなたが上記のようにコードをマージしたとき、何か不明な理由でスクリプトが完全に殺されたことを忘れてしまった。私はそれをもう一度分けたとき、それは働き始めた。私はJSHintを介してそれを実行し、いずれのエラーにも遭遇しなかった。とにかく私は正しい作業コードを公開するように編集しました... – Ghoztrider