2017-08-26 6 views
1

私はキーの配列に基づいて順序付けされた値の配列にこれを変換したい:オブジェクトをソートされた配列に変換する方法は?

{ 
    tom: 1, 
    jim: 2, 
    jay: 3 
} 

Input - >Output例:

['jim', 'tom', 'jay'] - >[2, 1, 3]

['jay', 'tom', 'jim'] - >[3, 1, 2]

どうすればこのことができますか?私はむしろ1行のロダッシュの解決策を望んでいます。

答えて

3

あなたが望むようにするために、値の配列を取得するためにlodashの_.at()を使用することができます。

var data = { 
 
    tom: 1, 
 
    jim: 2, 
 
    jay: 3 
 
}; 
 

 
var result1 = _.at(data, ['jim', 'tom', 'jay']); 
 
var result2 = _.at(data, ['jay', 'tom', 'jim']); 
 

 
console.log("['jim', 'tom', 'jay'] -> ", JSON.stringify(result1)); 
 
console.log("['jay', 'tom', 'jim'] -> ", JSON.stringify(result2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

2

あなたはArray#mapと、プレーンJavaScriptを使用して値をマッピングすることができます。

var data = { tom: 1, jim: 2, jay: 3 }, 
 
    order = ['jim', 'tom', 'jay'], 
 
    result = order.map(k => data[k]); 
 

 
console.log(result);

0

const data = { 
 
    tom: 1, 
 
    jim: 2, 
 
    jay: 3 
 
} 
 

 
const order = ['jay', 'tom', 'jim']; 
 

 
const result = order.map((item) => data[item]); 
 

 
console.log(result);

0
function SortByKeyArray(obj, key_arr) { 
    return key_arr.map(k => obj[k]); 
} 

またはMORがある

let SortByKeyArray = (obj, keys) => keys.map(k => obj[k]); 

私に優しいe。

関連する問題