1

私はそのようなフィールドを持つオブジェクトを持っています:

{
   d_name: { field_name: true },
   d_date: { field_date: ISODate() },
   status: 'success'
}

で始まるフィールドを取得してから、d_それらを1つの配列にプッシュする必要があります..

4

3 に答える 3

1

オブジェクトのキーを反復処理してから、キー名の先頭を比較できます。

var myObj = {
   d_name: { field_name: true },
   d_date: { field_date: ISODate() },
   status: 'success'
};
var outArray = {};
for(var key in myObj) {
  if(key.length >= 2 && key.substr(0,2) == "d_") {
    outArray[key] = myObj[key];
  }
}
于 2013-07-22T12:01:13.737 に答える
1

フィールドを取得する必要があります...

キーを取得する必要があるということですか?もしそうなら:

var d_keys = Object.keys(obj).filter(function (key) {
    return !key.indexOf("d_");
});

実際に値が必要な場合:

var d_values = Object.keys(obj).filter(function (key) {
    return !key.indexOf("d_");
}).map(function (key) {
    return obj[key];
});

これはさまざまな ES5 メソッド ( Object.keysArray.prototype.filterおよびArray.prototype.map) を使用するため、環境によっては適切なシムが必要になる場合があることに注意してください。

両方のスニペットの実例を次に示します。

于 2013-07-22T12:01:28.353 に答える
1

これがあなたに役立つことを願っています

 var q = [];
for(k in s)
{
 if(k.indexOf("d_") == 0){
 q.push(s[k]);
}
于 2013-07-22T12:06:14.303 に答える