从 javascript 数组命名数据中删除 json 字符串格式的对象或项目?

Remove the object or item which I have in the json string format from javascript array named data?

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"}]   

输出应该是:

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

您可以使用我编写的以下脚本来满足您的要求。 我假设您的 JSON 对象在两端都有相似的键名,如果没有,请告诉我我会为您更新脚本。

您想要的结果将在结果数据中可用。

<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>

虽然问题很不清楚,但如果您想获得一个新数组或原位(就地)解决方案,并且尽管某些值与类型不匹配,例如

qnt: 51

qnt: "51"

我建议使用 Array#filter for the array itself and Object.keys with Array#every 的组合来检查所有属性并获取所有不匹配的项目。

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);