Có một chức năng lodash tích hợp để thực hiện điều này:
var params = [
{ name: 'foo', input: 'bar' },
{ name: 'baz', input: 'zle' }
];
Và xuất ra cái này:
var output = {
foo: 'bar',
baz: 'zle'
};
Hiện tại tôi chỉ đang sử dụng Array.prototype.reduce()
:
function toHash(array, keyName, valueName) {
return array.reduce(function(dictionary, next) {
dictionary[next[keyName]] = next[valueName];
return dictionary;
}, {});
}
toHash(params, 'name', 'input');
Tự hỏi nếu có một đường tắt của nhà nghỉ.
_.keyBy
sẽ chuyển đổi toàn bộ mảng thành một đối tượng, trong khi câu hỏi chủ yếu là về việc có một mục từ mỗi đối tượng trong mảng làm khóa và một mục khác làm giá trị của nó. Nếu_.keyBy
được sử dụng, thì tất cả các giá trị sẽ là đối tượng.