0

フィルタリングしたいオブジェクトがあります。これは私が使用するものです:

query = {
   "teststring-123": "true",
   "teststring-12344566": "false",
   test: "true"
}

クエリをフィルタリングして、フィルタリング後に次のようにします。

query = {
   "teststring-123": "true",
   "teststring-12344566": "false"
}

$(query).each(function(index, value) {
    $.each(value, function(i, v) {
        if(i.indexOf('teststring-')==-1) {
            // remove part of query object where index is this one       
            console.log(index)
        }
    });     
});

どうすればこれを処理できますか?

4

6 に答える 6

3

「teststring-」で始まるキーを持たないすべてのキーと値のペアを削除しようとしていますか?もしそうなら...

for(var key in query){
    if(query.hasOwnProperty(key) && key.indexOf('teststring-') === -1){
        delete query[key];
    }
}
于 2012-05-04T16:18:34.167 に答える
2

演算子を使用しdeleteます:

$.each(query, function(key, value) {
    if(key.indexOf('teststring-') == -1) {
        delete query[key];
    }
});     

http://jsfiddle.net/NvZyA/(このデモでObject.keys()は、すべてのキーを表示するために使用されます)。

于 2012-05-04T16:17:09.493 に答える
1

deleteあなたはおそらくオペレーターを探しています。

于 2012-05-04T16:17:47.707 に答える
1

演算子を使用しdeleteます:

var query = {
   "teststring-123": "true",
   "teststring-12344566": "false",
   test: "true"
}
$.each(query, function(sKey) {
    if (sKey.indexOf("teststring-") < 0) { // or check if it is not on first position: != 0
        delete query[sKey];
    }  
});
于 2012-05-04T16:19:06.707 に答える
0

他の人が言っているように、delete演算子を使用します。ただし、オブジェクトのプロパティを繰り返す必要はありません。

var query = {
    "teststring-123" : true,
    "teststring-12344566" :  false,
    test: true
};

delete query['test'];
于 2012-05-04T16:22:21.017 に答える
0

このような?

var query = {
    "teststring-123": "true",
    "teststring-12344566": "false",
    "test": "true"
}
var newobj = {};

$.each(query, function(i, v) {
    if(i.indexOf('teststring-') != -1) {
        // remove part of query object where index is this one        
        console.log(i);
        newarr[i] = v;
    }
});
console.log(newobj);
于 2012-05-04T16:26:12.733 に答える