在2个单独的JSON文件中查找匹配的值

时间:2019-02-07 07:01:51

标签: angular typescript

我有以下两个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”匹配。

3 个答案:

答案 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")
    }
}