如何比较两个 SharePoint 列表和 return 个匹配的列表项
How to compare two SharePoint lists and return matching list items
我有两个结构相同的 SharePoint Online 2016 列表,我想使用 REST API 比较这些列表和 return 匹配字段。目标是单击一个按钮,这将:
- 获取当前用户的ID
- 在列表 A 中,获取 ID 等于当前用户 ID 的 Position 和 Location 字段
- 在列表 B 中,从 Position 和 Location 字段中获取所有项目
- 比较两个列表中“位置”和“位置”字段中的值,return 任何 个匹配的列表项
- 在jQuery数据表
中显示匹配结果
两个列表中的字段都是名称相同的选择列。
我可以通过 REST 从两个列表中检索数据,但是我不确定如何实施 comparing/matching 步骤。任何见解将不胜感激。我也愿意接受其他方法。
<input type="button" id="onClick" value="Get Matches">
// Get Location and Position fields from List A where user ID equals current user
$(function(){
$("#onClick").click(function(){
var userId = _spPageContextInfo.userId;
var ListAurl = _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/GetByTitle('ListA')/items?$select=location/Title,position/Title&$expand=location/Title,position/Title&$top=5000&$filter=(AuthorId eq '" + userId + "')";
$.ajax({
url: ListAurl,
type: "GET",
headers: {
"accept":"application/json; odata=verbose"
},
success: onSuccess,
error: onError
});
function onSuccess(data) {
var ListAItems = data.d.results;
}
function onError(error) {
}
// Get Location and Position fields from List B
var ListBurl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ListB')/items?$select=location/Title,position/Title&$expand=location/Title,position/Title&$top=5000";
$.ajax({
url: ListBurl,
type: "GET",
headers: {
"accept":"application/json; odata=verbose"
},
success: onSuccess,
error: onError
});
function onSuccess(data) {
var ListBItems = data.d.results;
}
function onError(error) {
}
});
});
可以在js中使用过滤功能
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
外层列表使用filter函数遍历过滤器中另一个list的值return符合你要求的值
当然你也可以直接使用双for循环:
for (let i = 0; i < lista.length; i++) {
for (let j = 0; j < listb.length; j++) {
//do compare action
}
}
我有两个结构相同的 SharePoint Online 2016 列表,我想使用 REST API 比较这些列表和 return 匹配字段。目标是单击一个按钮,这将:
- 获取当前用户的ID
- 在列表 A 中,获取 ID 等于当前用户 ID 的 Position 和 Location 字段
- 在列表 B 中,从 Position 和 Location 字段中获取所有项目
- 比较两个列表中“位置”和“位置”字段中的值,return 任何 个匹配的列表项
- 在jQuery数据表 中显示匹配结果
两个列表中的字段都是名称相同的选择列。
我可以通过 REST 从两个列表中检索数据,但是我不确定如何实施 comparing/matching 步骤。任何见解将不胜感激。我也愿意接受其他方法。
<input type="button" id="onClick" value="Get Matches">
// Get Location and Position fields from List A where user ID equals current user
$(function(){
$("#onClick").click(function(){
var userId = _spPageContextInfo.userId;
var ListAurl = _spPageContextInfo.webAbsoluteUrl + "/_api/Web/Lists/GetByTitle('ListA')/items?$select=location/Title,position/Title&$expand=location/Title,position/Title&$top=5000&$filter=(AuthorId eq '" + userId + "')";
$.ajax({
url: ListAurl,
type: "GET",
headers: {
"accept":"application/json; odata=verbose"
},
success: onSuccess,
error: onError
});
function onSuccess(data) {
var ListAItems = data.d.results;
}
function onError(error) {
}
// Get Location and Position fields from List B
var ListBurl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ListB')/items?$select=location/Title,position/Title&$expand=location/Title,position/Title&$top=5000";
$.ajax({
url: ListBurl,
type: "GET",
headers: {
"accept":"application/json; odata=verbose"
},
success: onSuccess,
error: onError
});
function onSuccess(data) {
var ListBItems = data.d.results;
}
function onError(error) {
}
});
});
可以在js中使用过滤功能
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
外层列表使用filter函数遍历过滤器中另一个list的值return符合你要求的值
当然你也可以直接使用双for循环:
for (let i = 0; i < lista.length; i++) {
for (let j = 0; j < listb.length; j++) {
//do compare action
}
}