Console log Object 下面的数组包含从SharePoint列表的REST API调用返回的多个对象。
各种商品= data.d.results [i];
console.log(items);
对象
对象
对象
在上述实例中,从rest调用返回了3个对象,并且其中两个对象对于票证的相同值具有相似的键
对象
ticket : 1234
size : 3
对象
ticket : 4567
size : 5
对象
ticket : 1234
size : 8
我正在寻找的是从变量项目= data.d.results [i]中仅仅返回2个对象;具有唯一键值对(如底部)的数组,顺序无关紧要。 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>
根据票证列过滤唯一的对象,并返回每个列表项(对象)的所有元数据
答案 0 :(得分:0)
这应该对您有用:
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))
答案 1 :(得分:0)
如果可能,您应该考虑在后端执行此操作。如果您有另一个客户,您将怎么办?再次编程相同的逻辑?
答案 2 :(得分:0)
可以像这样获得票证列的唯一值:
<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数组:
这是转换后的唯一票证数组: