簡體   English   中英

我如何從我的數據 json 中比較兩個 arrays?

[英]how can i compare two arrays from my data json?

你好我如何比較兩個 arrays 一個來自我的數據 json 和第二個來自數組?

我需要知道我的 secondArray 中是否存在“cm:taggable”的 ID

JSON

{
    "entry": {
        "isFile": true,
        "createdByUser": {
            "id": "admin",
            "displayName": "Administrator"
        },
        "modifiedAt": "2022-03-09T15:57:45.470+0000",
        "nodeType": "cm:content",
        "content": {
            "mimeType": "application/zip",
            "mimeTypeName": "ZIP",
            "sizeInBytes": 509390,
            "encoding": "UTF-8"
        },
        "parentId": "10o39gc76-8765-9f6b-8766904j55",
        "createdAt": "2022-03-04T19:44:47.009+0000",
        "isFolder": false,
        "modifiedByUser": {
            "id": "Prov1",
            "displayName": "Prov1"
        },
        "name": "bookOne.zip",
        "id": "ct73849o983-i383ui-6tre-w9e0-2h2f2k3i846738",
        "properties": {
            "cm:title": "bookOne",
            "cm:taggable": [
                "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8",
                "964d2c90-62e5-448d-a062-5e5297e518d9",
                "b87f6b9e-edbe-49d1-8a7c-05a35fe0eb78"
            ],
            "cm:description": "Book One"
        }
    }
}

第二個數組

const scondArray = [
"6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8",
"343434-9c56-428f-a4ac-193494f12948",
"61231-9c56-428f-a4ac-i18838223344",
]

您需要 select 嵌套在 JSON 變量中的數組並編寫 function 來進行比較。

 const jsonData = { "entry": { "isFile": true, "createdByUser": { "id": "admin", "displayName": "Administrator" }, "modifiedAt": "2022-03-09T15:57:45.470+0000", "nodeType": "cm:content", "content": { "mimeType": "application/zip", "mimeTypeName": "ZIP", "sizeInBytes": 509390, "encoding": "UTF-8" }, "parentId": "10o39gc76-8765-9f6b-8766904j55", "createdAt": "2022-03-04T19:44:47.009+0000", "isFolder": false, "modifiedByUser": { "id": "Prov1", "displayName": "Prov1" }, "name": "bookOne.zip", "id": "ct73849o983-i383ui-6tre-w9e0-2h2f2k3i846738", "properties": { "cm:title": "bookOne", "cm:taggable": [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "964d2c90-62e5-448d-a062-5e5297e518d9", "b87f6b9e-edbe-49d1-8a7c-05a35fe0eb78" ], "cm:description": "Book One" } } } const firstArr = [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "343434-9c56-428f-a4ac-193494f12948", "61231-9c56-428f-a4ac-i18838223344", ] const secondArr = [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "964d2c90-62e5-448d-a062-5e5297e518d9", "b87f6b9e-edbe-49d1-8a7c-05a35fe0eb78" ] const compare = (arr1, arr2) => arr1.length == arr2.length && arr1.reduce((a, b) => a && arr2.includes(b), true) const toCompare = jsonData["entry"]["properties"]["cm:taggable"] console.log('firstArr', compare(firstArr, toCompare)) console.log('secondArr', compare(secondArr, toCompare))

您只需要遍歷 cm:tagable 數組值,並將它們與 secondArray 值進行比較,如下所示:

 const Myjson = { "entry": { "isFile": true, "createdByUser": { "id": "admin", "displayName": "Administrator" }, "modifiedAt": "2022-03-09T15:57:45.470+0000", "nodeType": "cm:content", "content": { "mimeType": "application/zip", "mimeTypeName": "ZIP", "sizeInBytes": 509390, "encoding": "UTF-8" }, "parentId": "10o39gc76-8765-9f6b-8766904j55", "createdAt": "2022-03-04T19:44:47.009+0000", "isFolder": false, "modifiedByUser": { "id": "Prov1", "displayName": "Prov1" }, "name": "bookOne.zip", "id": "ct73849o983-i383ui-6tre-w9e0-2h2f2k3i846738", "properties": { "cm:title": "bookOne", "cm:taggable": [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "964d2c90-62e5-448d-a062-5e5297e518d9", "b87f6b9e-edbe-49d1-8a7c-05a35fe0eb78" ], "cm:description": "Book One" } } } const ids = Myjson.entry.properties['cm:taggable']; const scondArray = [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "343434-9c56-428f-a4ac-193494f12948", "61231-9c56-428f-a4ac-i18838223344", ]; ids.forEach((id, index) => { id === scondArray[index]? console.log(`the id ${id} exists in second array`): console.log(`the id ${id} doesnt exist in second array`) })

您可以使用Array#filter僅獲取firstArray中也存在於secondArray中的那些ids 否則每個第一個數組id的測試( boolean )是:

secondArray.includes( id )

 const obj = { "entry": { "isFile": true, "createdByUser": { "id": "admin", "displayName": "Administrator" }, "modifiedAt": "2022-03-09T15:57:45.470+0000", "nodeType": "cm:content", "content": { "mimeType": "application/zip", "mimeTypeName": "ZIP", "sizeInBytes": 509390, "encoding": "UTF-8" }, "parentId": "10o39gc76-8765-9f6b-8766904j55", "createdAt": "2022-03-04T19:44:47.009+0000", "isFolder": false, "modifiedByUser": { "id": "Prov1", "displayName": "Prov1" }, "name": "bookOne.zip", "id": "ct73849o983-i383ui-6tre-w9e0-2h2f2k3i846738", "properties": { "cm:title": "bookOne", "cm:taggable": [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "964d2c90-62e5-448d-a062-5e5297e518d9", "b87f6b9e-edbe-49d1-8a7c-05a35fe0eb78" ], "cm:description": "Book One" } } }, firstArray = obj.entry.properties["cm:taggable"], secondArray = [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "343434-9c56-428f-a4ac-193494f12948", "61231-9c56-428f-a4ac-i18838223344", ], output = firstArray.filter(id => secondArray.includes( id )); console.log( output ); //OUTPUT: ["6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8"] //The only id in firstArray that's also in secondArray

只需使用Array.some()方法,只需一行代碼即可實現。 如果在數組中找到提供的 function 返回 true 的元素,則返回 true; 否則返回 false。

現場演示

 const jsonObj = { "entry": { "isFile": true, "createdByUser": { "id": "admin", "displayName": "Administrator" }, "modifiedAt": "2022-03-09T15:57:45.470+0000", "nodeType": "cm:content", "content": { "mimeType": "application/zip", "mimeTypeName": "ZIP", "sizeInBytes": 509390, "encoding": "UTF-8" }, "parentId": "10o39gc76-8765-9f6b-8766904j55", "createdAt": "2022-03-04T19:44:47.009+0000", "isFolder": false, "modifiedByUser": { "id": "Prov1", "displayName": "Prov1" }, "name": "bookOne.zip", "id": "ct73849o983-i383ui-6tre-w9e0-2h2f2k3i846738", "properties": { "cm:title": "bookOne", "cm:taggable": [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "964d2c90-62e5-448d-a062-5e5297e518d9", "b87f6b9e-edbe-49d1-8a7c-05a35fe0eb78" ], "cm:description": "Book One" } } }; const secondArray = [ "6814d5c5-9c56-428f-a4ac-aa13ef6b1ef8", "343434-9c56-428f-a4ac-193494f12948", "61231-9c56-428f-a4ac-i18838223344", ] const isIDExist = jsonObj.entry.properties['cm:taggable'].some(item => secondArray.includes(item)); console.log(isIDExist);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM