2017-02-09 17 views
0

Я хочу превратить объект в массив его ключей, а затем сопоставить этот массив с чем-то другим.Есть ли сокращение от Object.keys.map

var a = { b:1, c:2}; 
Object.keys(a).map((key,i) => { 
    /*return some transformation of key*/ 
}) 

Есть ли какая-либо функция в lodash для этого, что делает то же самое?

Object.keys => сопоставить его с каким-либо другим преобразованного массива

Если я использую

_.keys(object).map((key) => { 
    /*return key transformation*/ 
}) 

Является ли это достаточно быстро - или есть какая-то другая функция lodash для этого ??

ответ

3

Для этого используется функция карты Lodash. Lodash иногда получает плохую репутацию за большую библиотеку, но вы можете загрузить только функцию карты с этим https://www.npmjs.com/package/lodash.map.

После того, как вы едите, он работает так:

import map from 'lodash.map'; 
const a = { b:1, c:2 }; 
map(a, (val, key) => { 
    /*return some transformation of key and/or val*/ 
}) 

Надеется, что это помогает :)

+0

awesome thanks it works: i did import {map} from 'lodash' – Prabhas

+0

Удивительный! Да, это так же хорошо, я просто часто слышу, как люди жалуются на полные установки lodash из-за размера, поэтому я думал, что брошу это там ха-ха. – mparis

0

Это действительно легко реализовать с помощью чистого JavaScript:

const map = Object.prototype.map = function (func, object) { 
 
    const iterate = object || this 
 
    const keys = Object.keys(iterate) 
 
    const obj = {} 
 
    for (let i = 0; i < keys.length; i++) { 
 
     const key = keys[i] 
 
     obj[key] = func(key, iterate[key]) 
 
    } 
 
    return obj 
 
} 
 

 
const aObject = { a: 1 } 
 

 
console.log(JSON.stringify(aObject.map((key, value) => value + 6))) 
 
console.log(JSON.stringify(map((key, value) => value + 6, aObject)))

И вы можете использовать его как i n функциональный стиль и объектно-ориентированный :)

 Смежные вопросы

  • Нет связанных вопросов^_^