2017-06-03 12 views
0

私はVueJSでプロジェクトをやっていますが、私はいくつかのオブジェクトからなるデータの配列を持っています。名前からオブジェクトのプロパティを名前で別のオブジェクトにプル

これらのオブジェクトはPHPバックエンドから引き出され、

IDのような値で構成されている:2123 名: "名前値" ステータス: "アクティブ" ACCOUNT_ID: "2KGGALS2353255"

は私がしたい想像同様の配列にキー名によってこれらを分割するが、私は2人の子で構成されて親オブジェクトを持つようにしたいためには、質問はどのように私はこれのwiを達成することができますです

[ 
    0: { 
    core: { 
     id: 2123 
     name: "Name Value" 
    }, 
    extra: { 
     status: "active", 
     account_id: "2KGGALS2353255" 
    } 
] 

オブジェクトth Javascript?私はJavaScriptのデータを変更する必要はありません。 私はVueJSとLodashを使うことができます。

+1

あなたはpすることができますか?あなたは何を望むのか?私はそれがより明確になるだろうと思う – Ced

答えて

0

これはあなたの目的ES6のobject destructuring、およびbabel transformを必要とobject rest spread提案を、使用

function separate(obj, keys) { 
 
    let target = {}, rest = {}; 
 
    Object.keys(obj).forEach(function(key) { 
 
    if (keys.includes(key)) { 
 
     target[key] = obj[key]; 
 
    } else { 
 
     rest[key] = obj[key]; 
 
    } 
 
    }); 
 
    return { target: target, rest: rest }; 
 
} 
 

 
let stuff = { 
 
    id: 2123, 
 
    name: "Name Value", 
 
    status: "active", 
 
    account_id: "2KGGALS2353255" 
 
}; 
 

 
let separated = separate(stuff, ['id', 'name']); 
 

 
console.log({ 
 
    core: separated.target, 
 
    extra: separated.rest 
 
});

0

のために働く必要があり、あなたは新しいに配列をArray#mapすることができます必要な形式のオブジェクトの配列:

const arr = [{"id":1,"name":"Name1","status":"active","account_id":"2KGGALS2353255"},{"id":2,"name":"Name2","status":"active","account_id":"4ABCLS2353255"},{"id":3,"name":"Name3","status":"active","account_id":"6LMNALS2353255"}]; 
 

 
const result = arr.map(({ id, name, ...extra }) => ({ 
 
    core: { 
 
    id, 
 
    name 
 
    }, 
 
    extra 
 
})); 
 

 
console.log(result);

あなたは余分を取得するコア、および_.omit()を得るにlodashの_.pick()を使用して同じことを行うことができます。

var arr = [{"id":1,"name":"Name1","status":"active","account_id":"2KGGALS2353255"},{"id":2,"name":"Name2","status":"active","account_id":"4ABCLS2353255"},{"id":3,"name":"Name3","status":"active","account_id":"6LMNALS2353255"}]; 
 

 
var result = arr.map(function(obj) { 
 
    return { 
 
    core: _.pick(obj, ['id', 'name']), 
 
    extra: _.omit(obj, ['id', 'name']) 
 
    }; 
 
}); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

関連する問題