2016-03-31 8 views
2

私はJavaScriptで作業しています。私に助けてください。 ここに私の問題があります。jQueryマップで選択されたオブジェクト

var NewObj= [{ id: 0, b: "Zero", c: "x", d: "!" }, { id: 1, b: "One", c: "y", d: "@" }] 

私は$を使用しようとした。このようになるために - 私が選択したオブジェクトの要素(> "ID" "")に変更したい

var MyObj= [{ a: 0, b: "Zero", c: "x", d: "!" }, { a: 1, b: "One", c: "y", d: "@" }] 

: 私は、このオブジェクトを持っていますこの

NewObj= $.map(MyObj, function (obj) { 
     return { id: obj.a, b: obj.b, c: obj.c, d:obj.d }; 
    }); 

よう.MAP()メソッドは、私が唯一のオブジェクトの一つの要素を変更するので、これを行うに任意のより良い方法はありますか?

答えて

2

ES6/Object.assign、jQueryのための不要のための必要性無し:

ワーキングフィドルhttps://jsbin.com/gosaqid/edit?js,console

function makeObj(obj){ 
    return obj.map(function(el, i) { 
    el.id = i; 
    delete el.a; 
    return el; 
    }); 
} 
+0

これは破壊的である、と 'MyObj'を変更します。 'map'ではなく' forEach'を使うこともできます。 – Amadan

+0

私が理解できるように助けてください...彼が何を望んでいないのですか?オブジェクトを変更するには? – JordanHendrix

+0

私は、変数名の選択によって、彼が古いもの( 'MyObj')とは異なる新しいオブジェクト(' NewObj')を作りたいと思っています。 – Amadan

2

例では、MyObjは、オブジェクトののの配列です。ご希望の結果で

var object = {} 
var array = [] 
var arrayOfObjects = [{}, {}, {}] 

、あなたは配列にキーの一つにすべてのオブジェクトを変更しました。

mapを使用すると、これを実行するのに十分な方法です。実際、JavaScriptの配列にはマップメソッドが組み込まれています。

var newArrayOfObjects = arrayOfObjects.map(function (obj) { 
    return { 
    id: obj.a, 
    b: obj.b, 
    c: obj.c 
    } 
}) 

あなたがキーのトンを持っている場合は、$.extendを使用することができますので、これは少し冗長を得ることができますが、全部がこのようなのように記述することができるので、チャンスはあなたが最新のブラウザ用のコードを書いているされています

var newArrayOfObjects = arrayOfObjects.map(obj => 
    Object.assign({}, obj, { id: obj.a }) 
) 

更新:@Amadanが示唆するように、あなたがクローン/コピーを持っていない限り、/利用できる機能を拡張

2

をする必要がない場合は、古いキーを削除することができます。 1つは新しいJavaScriptでcoming upjQuery has oneであり、あなた自身のことを書くことはそれほど難しいことではありません。しかし、それはまだ公園を散歩ではありません - あなたはちょうどあなたがコピーして削除する必要がある、プロパティの名前を変更することはできません。

NewObj = MyObj.map(function(obj) { 
    var newobj = Object.assign({}, obj, {id: obj.a}); 
    delete newobj.a; 
    return newobj; 
}); 
関連する問題