#javascript #lodash
#javascript #lodash
Вопрос:
const things = {
thing1: 'Thing 1',
thing2: 'Thing 2',
thing3: 'Thing 3',
};
const newThings = _.map(things, (thing, thingKey) => {
console.log(thingKey, thing);
}
// Outputs:
// thing1 Thing 1
// thing2 Thing 2
// thing3 Thing 3
Мне нужно знать, какой номер итерации в каждом цикле. Я мог бы вручную создать переменную, а затем увеличивать ее на каждой итерации цикла, но я надеялся на некоторую встроенную функциональность метода lodash map
. Какие-нибудь советы?
let iterationNumber = 0;
const newThings = _.map(things, (thing, thingKey, collection) => {
// Do some stuff
if (iterationNumber === collection.length - 1) {
// Do something when it is the last property
}
iterationNumber ;
});
Комментарии:
1. Вам нужно использовать .map или любая другая идея itrating будет работать для вас?
2. Мне нужно использовать map, так как я использую его для React и должен буду вернуть массив JSX
3. используйте номинальную карту …. myArray.map( (index, item) => console.log(item, «at index: «, index)
4.
map
будет работать только для массива, но я полагаю, что я мог бы использоватьObject.entries()
для преобразования объекта в массив.5. Ну, нет индекса, если вы не используете массив?
Ответ №1:
Вы можете использовать Object.entries()
для получения ключа / значения из Object
и чем map
map (currentValue, index, array)
const things = {
thing1: 'Thing 1',
thing2: 'Thing 2',
thing3: 'Thing 3',
};
Object.entries(things).map(([key,value],index)=>{
console.log(key,value,index)
})
Комментарии:
1. Вопрос, специально заданный для
lodash
решений на основе.
Ответ №2:
С помощью lodash вы можете _.overArgs()
сгенерировать функцию, которая преобразует объект в записи с _.toPairs()
помощью и вызывает _.map()
с помощью записей:
const { overArgs, map, toPairs } = _;
const mapObjectWIthIndex = overArgs(map, [toPairs]);
const things = {
thing1: 'Thing 1',
thing2: 'Thing 2',
thing3: 'Thing 3',
};
const newThings = mapObjectWIthIndex(things, ([v, k], index, collection) => {
if (index === collection.length - 1) return `${v} - last`;
return `${v} - ${index}`;
});
console.log(newThings);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
Ответ №3:
Мне все еще интересно, есть ли способ получить индекс из lodash
метода, но это решение, которое я придумал, работает довольно хорошо:
const newThings = Object.entries(things).map(([thingKey, thing], index) => {
// Do some stuff
if (index === collection.length - 1) {
// Do something when it is the last property
}
});
Комментарии:
1. Принятый ответ имеет тот же контент, и, кстати, оба ответа не используют Lodash.