2016-07-07 50 views
-1
var item = {"mtyp":2,"mtr":3,"qnt":51,"unt":"pint","nts":"cvbbcv"} 

var data = [{"mtyp":"2","mtr":"2","qnt":"54","unt":"ml","nts":"ngvjn"},{"mtyp":"2","mtr":"3","qnt":"51","unt":"pint","nts":"cvbbcv"}] 

輸出應該是:從javascript數組命名的數據中刪除我的json字符串格式的對象或項目?

var data = [{"mtyp":"2","mtr":"2","qnt":"54","unt":"ml","nts":"ngvjn"}] 
+1

您好,歡迎StackOverflow上。請花一些時間閱讀幫助頁面,尤其是名爲[「我可以詢問什麼主題?」(http://stackoverflow.com/help/on-topic)和[「我應該問什麼類型的問題避免問?「](http://stackoverflow.com/help/dont-ask)。更重要的是,請閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/q/156810/204922)。您可能還想了解[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – lokusking

+0

@nnnnnn感謝您的回覆。你能告訴我如何做到這一點? – Sachin1392

+0

@SwarajGiri - 是的,我知道在這個例子中它並不重要,它只是在我必須回滾太多其他破壞性編輯以在其他問題中編碼之後的原則。關於六個字符的限制,也許您可​​能已經添加了一些額外的非代碼文本,如「Input:」,與原始「Output」並行。無論如何,我會刪除我原來的評論,現在你已經看到了。 – nnnnnn

回答

0

您可以使用下面我寫來滿足您的要求腳本。 我假設你的JSON對象在兩端都有類似的鍵名,如果沒有,那麼讓我知道我會爲你更新腳本。

您的預期結果將在resultdata中可用。

<script type="text/javascript"> 
    var item = { "mtyp": 2, "mtr": 3, "qnt": 51, "unt": "pint", "nts": "cvbbcv" } 

    var data = [{ "mtyp": "2", "mtr": "2", "qnt": "54", "unt": "ml", "nts": "ngvjn" }, { "mtyp": "2", "mtr": "3", "qnt": "51", "unt": "pint", "nts": "cvbbcv" }] 

    // Holds the result data. 
    var resultdata = [{}]; 

    // Remove initialized result set. 
    resultdata.pop(); 

    // Variable to hold comparison value. 
    var hasMatch = false; 

    // Loop through data values. 
    for (var index = 0; index < data.length; ++index) { 

     // Fetch current item. 
     var individualData = data[index]; 

     // Compare item values with individual data values. 
     if (item.mtyp == individualData.mtyp && 
      item.mtr == individualData.mtr && 
      item.qnt == individualData.qnt && 
      item.unt == individualData.unt && 
      item.nts == individualData.nts) { 
      hasMatch = true; 
     } 
     else { 
      hasMatch = false; 
     } 

     // If then is no match then add to the result. 
     // ResultData will hold all the values that are not present in item. 
     if (!hasMatch) 
     { resultdata.push(individualData); } 
    } 
</script> 
+0

謝謝@Dinesh的迴應。試了一樣。它的工作原理,但唯一的問題是我得到的輸出爲'[{},{「mtyp」:「2」,「mtr」:「2」,「qnt」:「54」,「unt」:「ml 「,」nts「:」ngvjn「}]'而不是我想''{」mtyp「:」2「,」mtr「:」2「,」qnt「:」54「,」unt「:」ml「, 「nts」:「ngvjn」}]' – Sachin1392

+0

我已經更新了代碼,這將對你有用。如果它適合你,請標記爲答案。 –

+0

謝謝@Dinesh。非常感謝你!!!!!!! – Sachin1392

0

雖然問題還不是很清楚,如果你想獲得原位(替代)解決方案的新數組或一個,儘管一些值不匹配類型明智的,像

qnt: 51 

qnt: "51" 

我建議使用的Array#filter組合爲陣列本身Object.keysArray#every檢查所有屬性,並得到所有項w不匹配。

var item = { mtyp: 2, mtr: 3, qnt: 51, unt: "pint", nts: "cvbbcv" }, 
 
    data = [{ mtyp: "2", mtr: "2", qnt: "54", unt: "ml", nts: "ngvjn" }, { mtyp: "2", mtr: "3", qnt: "51", unt: "pint", nts: "cvbbcv" }]; 
 

 
data = data.filter(function (a) { 
 
    return !Object.keys(item).every(function (k) { 
 
     return a[k] == item[k]; 
 
    }); 
 
}); 
 

 
console.log(data);

+1

感謝@妮娜的回覆。代碼很短,完美! – Sachin1392

相關問題