Вернуть уникальные объекты с уникальным значением и пару ключей из вызова REST API? - PullRequest
0 голосов
/ 14 мая 2019

Объект журнала консоли Нижний массив содержит несколько объектов, возвращаемых из вызова API REST из списка SharePoint.

var items = data.d.results [i];

console.log (элементы);

объект

объект

объект

В приведенном выше примере 3 объекта возвращаются из вызова rest, и два объекта имеют одинаковый ключ для одного и того же значения для билета

объект

 ticket : 1234
 size : 3

объект

  ticket : 4567
  size : 5

объект

  ticket : 1234
  size : 8

Я ищу вернуть только 2 объекта из var items = data.d.results [i]; массив с уникальной парой ключ-значение, например, снизу, порядок не имеет значения. JavaScript или JQuery работает.

объект

    ticket : 1234
    size : 3

объект

    ticket : 4567
    size : 5


<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">
    $(function () {
        ExecuteOrDelayUntilScriptLoaded(getListItems, "sp.js");
    });
    function getListItems() {     
            $.ajax({
                url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listname + "')/Items?$Select=Title,ticket",
                method: "GET",
                headers: {
                    "Accept": "application/json;odata=verbose",
                },
                success: onSuccess,
                error: onError
            });

       function onSuccess(data){
        for(var i=0; i<data.d.results.length; i++){
          var items = data.d.results[i];
          console.log(items);
          }
         }
        };

</script>

фильтровать объекты на основе столбца заявки, которые являются уникальными, и возвращать все метаданные каждого элемента списка (объектов)

Ответы [ 3 ]

0 голосов
/ 14 мая 2019

Если возможно, вы должны рассмотреть возможность сделать это на бэкэнде.Что вы будете делать, если у вас есть другой клиент?Программировать снова ту же логику?

0 голосов
/ 15 мая 2019

Может получить уникальное значение для столбца заявки, например:

<script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
<script type="text/javascript">

    function getListItems(url, listname, query, complete, failure) {
        $.ajax({
            url: url + "/_api/web/lists/getbytitle('" + listname + "')/items" + query,
            method: "GET",
            headers: { "Accept": "application/json; odata=verbose" },
            success: function (data) {
                complete(data.d.results); 
            },
            error: function (data) {
                failure(data);
            }
        });
    }


    getListItems('http://sp','UniqueValue','?$select=ticket',

     function(items){    
         console.log(items)

         var UniqueTickets = groupBy(items,'ticket');
          //This gives unique value array
           console.log(UniqueTickets)


        },


        function(error){
           console.log(JSON.stringify(error));
        }


    );

    function groupBy(items,propertyName)
    {
        var result = [];
        $.each(items, function(index, item) {
           if ($.inArray(item[propertyName], result)==-1) {
              result.push(item[propertyName]);
           }
        });
        return result;
    }
    </script>

Это полный массив data.d.results:

enter image description here

Это уникальный массив заявок после преобразования:

enter image description here

0 голосов
/ 14 мая 2019

Это должно работать для вас:

 var results=[
  {
     ticket : 1234,
     size : 3
  },{
     ticket : 3434,
     size : 2
  },{
     ticket : 1234,
     size : 9
  },{
     ticket : 1234,
     size : 93
  }
];  
const filterResults=(results)=>{
  const flags=[],output=[];
  results.forEach((result)=>{
    if(flags.indexOf(result.ticket)<0){
      output.push(result)
      flags.push(result.ticket)
    }
  })
  return output;
}
console.log(filterResults(results))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...