Как пройти через объекты jquery в массиве и отобразить желаемый результат? - PullRequest
0 голосов
/ 25 октября 2011

Я новичок в jquery пространстве и надеюсь многому научиться через Stackoverflow.

У меня есть элемент данных списка Sharepoint 2010, который имеет тип данных Choice, позволяющий пользователю установить несколько значений.Я использую SPService для получения элементов списка.Ниже приведен код:

    $().SPServices({
                  webURL: 'http://abc.def.com/Products',
                  operation: 'GetListItems',
                  listName: listName,
                  async: false,
                  CAMLQuery: query,
                  CAMLViewFields: fields,
                  CAMLRowLimit: 11,

                  completefunc:
                  function (xData, Status) 
    {        $(xData.responseXML).find("[nodeName=z:row]").each(function () 

    {
           $("#ProdList").val("-1");//Pre-filled with selected val.
           var myProd= $(this).attr("ows_Prod"); //displays in this format ;#myProd1;#myProd2;#

          //Here 1. i want to store myProd as an array.
                 2. eliminate ;#
                 3. store final array elements as myProd1, myProd2
                 4. Display myProd1
                            myProd2
                                    in the dropdown list.
           //


           $("#ProdList").append('<option>' + myProd+ '</option>');
      });   
    }

     });      

     });

    <body>
    <select class="Dropdowns" id="ProdList">
    <option value="-1">My ProdLists</option>
    </select>
    </body>
  Any pointers? Thanks.          

1 Ответ

1 голос
/ 25 октября 2011

Немного сложно понять, в чем специфика вашего вопроса. Я предполагаю, что комментарии в вашем коде описывают вопрос. В следующий раз я бы посоветовал вам быть более конкретным с подробностями вашего вопроса в тексте, а не в коде. Но, учитывая это, вот мое предположение о том, что вы пытаетесь сделать.

У вас есть строка, которая выглядит следующим образом:

";#myProd1;#myProd2;#"

И вы хотите получить myProd1 и myProd2 в массив, а затем из этого массива добавить в раскрывающийся список.

// get product list
var myProd = $(this).attr("ows_Prod");
// clean up the ends
myProd = myProd.replace(/^;#|;#$/g, "");
// split into pieces
var myProdArray = myProd.split(";#");
// add each piece as an option to the drop-down
for (var i = 0; i < myProdArray.length; i++) {
    $("#ProdList").append('<option>' + myProdArray[i] + '</option>')
}

Вы можете отсортировать массив в порядке словаря с помощью:

myProdArray.sort();

Вы можете удалить дубликаты из отсортированного массива следующим образом:

var noDupArray = [];
noDupArray.push(myProdArray[0]);
for (var i = 1; i < myProdArray.length; i++) {
    if (myProdArray[i] != myProdArray[i-1]) {
        noDupArray.push(myProdArray[i]);
    }
}

Итак, если вы хотите отсортировать и удалить дубли, вы можете использовать этот код:

var myProd = $(this).attr("ows_Prod");
myProd = myProd.replace(/^;#|;#$/g, "");
var myProdArray = myProd.split(";#");
// sort
myProdArray.sort();
// remove dups
var noDupArray = [];
noDupArray.push(myProdArray[0]);
for (var i = 1; i < myProdArray.length; i++) {
    if (myProdArray[i] != myProdArray[i-1]) {
        noDupArray.push(myProdArray[i]);
    }
}
// add each piece as an option to the drop-down
for (i = 0; i < noDupArray.length; i++) {
    $("#ProdList").append('<option>' + noDupArray[i] + '</option>')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...