簡體   English   中英

JS - 在推入數組之前檢查項目是否存在

[英]JS - Check item exist before Pushing in Array

我沒有格式化 JSON 結構化鍵值對數據。 我需要對其進行格式化並將其返回到另一種格式化的 structured.so 中,

示例代碼::

// Unformatted data like this, which contains repeating keys

  let query = {
    "junk,fruit,vegetable,junk,fruit": "pizza,apple,potato,burger,mango"
  }


// formatting like this,
const keys = Object.keys(query)[0].split(",");
const values = Object.values(query)[0].split(",");

const newObj = {}

for (let i = 0; i < keys.length; i++) {
   newObj[keys[i]] = values[i]
}

console.log(newObj)

//[ junk:pizza and fruit:apple are not returned in console]

//Output:
// {junk:  'burger',
// fruit: 'mango',
// vegetable: 'potato'}

JSON,不允許重復鍵,這就是它不返回的原因。這就是為什么我試圖在另一個結構中返回它。

為此,如果重復,則將其value推送到數組的相同數據中,如預期 Output 所示。

newObj.includes('junk')newObj.includes('mango') ,可以檢查該特定是否已存在於 output 中或是否存在於數組中。

我想退回我的Output:像這樣

{
    'junk': {
     'data': [
       'pizza', 
       'burger'
      ]
    }, 
    'fruit': {
     'data': [
       'apple',
       'mango'
     ]
    },
    'vegetable': {
     'data': [
        'potato'
      ]
    }
}        

JSFiddle 鏈接: https://jsfiddle.net/sophia22134/0yLxowt4/

這可能有幫助

If(keyArray.indexOd(i) == -1) { valueArray.push(i) }

或者只需要更新

const newValueKey = {};

for (let i = 0; i < keys.length; i++) {
  if (!newValueKey[keys[i]]) newValueKey[keys[i]] = { data: [] };
  newValueKey[keys[i]].data.push(values[i]);
}

只需要有條件地將值分配為數組或將其與現有值連接,具體取決於鍵上的值是否存在。

為簡單起見,如果鍵只包含一個字符串數組,則沒有必要將其嵌套到另一個 object 中: newObj.fuits={data:[...]}應該是newObj.fruits=[...]

 // Unformatted data like this, which contains repeating keys let query = { "junk,fruit,vegetable,junk,fruit": "pizza,apple,potato,burger,mango" } // formatting like this, const keys = Object.keys(query)[0].split(","); const values = Object.values(query)[0].split(","); const newObj = {} for (let i = 0; i < keys.length; i++) { let key=keys[i] let value=values[i] newObj[key] = newObj[key]? [...newObj[key],value]: [value] } console.log(newObj) /* { "junk": [ "pizza", "burger" ], "fruit": [ "apple", "mango" ], "vegetable": [ "potato" ] } */

暫無
暫無

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

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