我有以下两个JSON文件,这些文件存储在本地项目文件夹中。
文件1
{"_links":{"self":[{"href":"http://val1"},{"href":"http://val2"},{"href":"http://val3"},{"href":"http://val4"},{"href":"http://val5"}]}}
文件2
{"_embedded":{"accountList":[{"accountNumber":"1234","link":{"href":"http://val3/newAccount"}}]}}
我正在尝试编写一个在2个文件中查找匹配值(特别是“链接”值)的函数。但是,第二个文件具有其他url参数。
因此,总而言之,我想将文件1中的“ href”:“ http://val3”与文件2中的“ href”:“ http://val3/newAccount”匹配。
答案 0 :(得分:1)
我将映射保留为对象,值将是来自link2的匹配href。由于可能有多个具有相同前缀的值,因此将其设置为数组。如果只希望最后一个匹配值,请随时删除.push
并替换为=
let file1 = {"_links":{"self":[{"href":"http://val1"},{"href":"http://val2"},{"href":"http://val3"},{"href":"http://val4"},{"href":"http://val5"}]}}
let file2 =
{"_embedded":{"accountList":[{"accountNumber":"1234","link":{"href":"http://val3/newAccount"}}]}}
let href1 = file1._links.self.map(i => i.href);
let href2 = file2._embedded.accountList.map(i=> i.link.href);
let mapping = href2.reduce((acc,ref) => {
let prefix = href1.find(_ref => ref.startsWith(_ref));
if(prefix){
if(!acc[prefix]) acc[prefix] = [];
acc[prefix].push(ref);
}
return acc;
},{});
console.log(mapping);
答案 1 :(得分:1)
您可以使用let cam_req = PHAssetCollectionChangeRequest(for: camera_roll)
cam_req?.insertAssets([asset] as NSArray, at: IndexSet(integer: pos))
函数来判断 string 是否包含某个 substring 。这种情况将反映出一场比赛。看起来像这样
indexOf
答案 2 :(得分:0)
您可以尝试一下,
// JSON 1
let json1 = {
_links:{
self:[
{href:"http://val1"},
{href:"http://val2"},
{href:"http://val3"},
{href:"http://val4"},
{href:"http://val5"}
]
}
}
// JSON 2
let json2 = {
_embedded:{
accountList:[
{accountNumber:"1234",link:{href:"http://val3/newAccount"}}
]
}
}
// Iterate through account list
for (let account of json2._embedded.accountList){
// Search in links list
if(json1._links.self.find(i=>account.link.href.startsWith(i.href))){
console.log("Match found")
}else{
console.log("No match found")
}
}