はい、Array.map()または$.map()は同じことを行います。
//array.map:
var ids = this.fruits.map(function(v){
    return v.Id;
});
//jQuery.map:
var ids2 = $.map(this.fruits, function (v){
    return v.Id;
});
console.log(ids, ids2);
http://jsfiddle.net/NsCXJ/1/
array.map は古いブラウザーではサポートされていないため、jQuery メソッドを使用することをお勧めします。
何らかの理由で他のものを好む場合は、古いブラウザのサポートのためにいつでもポリフィルを追加できます。
カスタム メソッドをいつでも配列プロトタイプに追加することもできます。
Array.prototype.select = function(expr){
    var arr = this;
    //do custom stuff
    return arr.map(expr); //or $.map(expr);
};
var ids = this.fruits.select(function(v){
    return v.Id;
});
文字列を渡す場合に関数コンストラクターを使用する拡張バージョン。おそらく何かをいじる:
Array.prototype.select = function(expr){
    var arr = this;
    switch(typeof expr){
        case 'function':
            return $.map(arr, expr);
            break;
        case 'string':
            try{
                var func = new Function(expr.split('.')[0], 
                                       'return ' + expr + ';');
                return $.map(arr, func);
            }catch(e){
                return null;
            }
            break;
        default:
            throw new ReferenceError('expr not defined or not supported');
            break;
    }
};
console.log(fruits.select('x.Id'));
http://jsfiddle.net/aL85j/
アップデート:
これは非常に人気のある回答になっているので、同様のwhere()+  を追加しfirstOrDefault()ます。これらは、文字列ベースの関数コンストラクター アプローチ (最速) で使用することもできますが、オブジェクト リテラルをフィルターとして使用する別のアプローチを次に示します。
Array.prototype.where = function (filter) {
    var collection = this;
    switch(typeof filter) { 
        case 'function': 
            return $.grep(collection, filter); 
        case 'object':
            for(var property in filter) {
              if(!filter.hasOwnProperty(property)) 
                  continue; // ignore inherited properties
              collection = $.grep(collection, function (item) {
                  return item[property] === filter[property];
              });
            }
            return collection.slice(0); // copy the array 
                                      // (in case of empty object filter)
        default: 
            throw new TypeError('func must be either a' +
                'function or an object of properties and values to filter by'); 
    }
};
Array.prototype.firstOrDefault = function(func){
    return this.where(func)[0] || null;
};
使用法:
var persons = [{ name: 'foo', age: 1 }, { name: 'bar', age: 2 }];
// returns an array with one element:
var result1 = persons.where({ age: 1, name: 'foo' });
// returns the first matching item in the array, or null if no match
var result2 = persons.firstOrDefault({ age: 1, name: 'foo' }); 
関数コンストラクターとオブジェクト リテラルの速度を比較するjsperfテストを次に示します。前者を使用する場合は、文字列を正しく引用することに注意してください。
私の個人的な好みは、1 ~ 2 個のプロパティをフィルター処理するときにオブジェクト リテラル ベースのソリューションを使用し、より複雑なフィルター処理のためにコールバック関数を渡すことです。
最後に、メソッドをネイティブ オブジェクト プロトタイプに追加する際の一般的なヒントを 2 つ紹介します。
- 上書きする前に、既存のメソッドの出現を確認してください。 - if(!Array.prototype.where) {
    Array.prototype.where = ...
 
- IE8 以下をサポートする必要がない場合は、Object.definePropertyを使用してメソッドを定義し、列挙できないようにします。誰かが- for..in配列で使用した場合 (これはそもそも間違っています)、列挙可能なプロパティも反復処理します。ただ頭を上げてください。