2016-07-07 4 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"}] 

出力は次のようになります。あなたは私はあなたの要件を満たすために書かれているスクリプトの下に使用することができますjsonの文字列形式のオブジェクトまたは項目を、javascript配列のdataという名前で削除しますか?

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 question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。 – lokusking

+0

@nnnnnnご回答いただきありがとうございます。これを達成する方法を教えてもらえますか? – Sachin1392

+0

@SwarajGiri - そうですね、この例ではそれほど重要ではないことは分かっています。他の質問でコードを作成するためにあまりにも多くの破壊的な編集をロールバックしなければならないということだけです。 6文字の制限に関しては、おそらく、 "Input:"のような非コードテキストの余分なビットを元の "出力"と並行して追加することができます。とにかく、あなたはそれを見たことがあるので、元のコメントを削除します。 – nnnnnn

答えて

0

。 JSONオブジェクトの両端に似たキー名があると仮定しています。そうでない場合は、スクリプトを更新します。

希望する結果がresultdataで利用可能になります。

qnt: 51 

よう

<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" "nts": "ngvjn"}] ' – Sachin1392

+0

私はコードを更新しました。これはあなたのために働くでしょう。それがあなたのために働いた場合、答えとしてマークしてください。 –

+0

ありがとう@Dinesh。どうもありがとうございました!!!!!!! – Sachin1392

0

あなたは(場所に)その場で新しい配列または取得したい場合は質問は、非常に明確ではないもののソリューション、およびいくつかの値にもかかわらず、賢明な型と一致しません、そして

qnt: "51" 

は、私はすべてのプロパティをチェックするためArray#everyで配列自体とObject.keysためArray#filterの組み合わせを使用し、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

お返事ありがとう@Nina。コードは短くて完璧です! – Sachin1392

関連する問題