#javascript #foreach
#javascript #foreach
Вопрос:
Я пытаюсь использовать forEach для массива, но он работает только с первым элементом в массиве.
Я хочу вернуть список объектов, но не в массиве
Это мой массив
const latLngCoords = [
[-1.56789, 63.45547],
[-1.44523, 63.48642],
[-1.54635, 63.46643]
];
Тогда способ, которым я в настоящее время использую forEach, таков
let x;
latLngCoords.forEach(e => {
x = { lat: e[0], lng: e[1] };
});
return x;
Результат
{ lat: -1.56789, lng: 63.45547 }
Ожидал
{ lat: -1.56789, lng: 63.45547 }
{ lat: -1.44523, lng: 63.48642 }
{ lat: -1.54635, lng: 63.46643 }
Любая помощь приветствуется
Ответ №1:
Используется map
для возврата нового массива.
forEach
просто выполняет итерацию по массиву, но не возвращает новый.
const latLngCoords = [
[-1.56789, 63.45547],
[-1.44523, 63.48642],
[-1.54635, 63.46643],
];
const result = latLngCoords.map(e => {
return { lat: e[0], lng: e[1] };
});
console.log(result);
Комментарии:
1. Спасибо @Tigran, но я не хочу возвращать новый массив, просто список объектов, как в ожидаемых результатах, которые я выставил
2. @Wisdom1 Вы хотите вернуть список объектов и сохранить его в одной переменной (x)? если вы не хотите возвращать новый массив, вам нужно вернуть объект, содержащий эти вложенные объекты
Ответ №2:
Вы можете использовать map для возврата массива данных.
const x = latLngCoords.map(cord=>({lat:cord[0],lng:cord[1]}));
Ответ №3:
let x=[];
const latLngCoords = [
[-1.56789, 63.45547],
[-1.44523, 63.48642],
[-1.54635, 63.46643]
];
latLngCoords.forEach((c) => {
x.push({ lat: c[0], lng: c[1] })
})
console.log(x)
Ответ №4:
forEach просто выполняет итерацию по массиву, не возвращая вам результатов. Вы повторно объявляете свою переменную x каждый раз внутри forEach.
просто вы используете консольный журнал внутри forEach:
latLngCoords.forEach(e => {
console.log({ lat: e[0], lng: e[1] });
});
или используйте map для создания нового массива объектов:
let newArr = latLngCoords.map(e => ({ lat: e[0], lng: e[1] }));
console.log(newArr)
Ответ №5:
Используйте map
вместо forEach
.
const result = latLngCoords.map(([lat, lng]) => ({ lat, lng}));
const latLngCoords = [
[-1.56789, 63.45547],
[-1.44523, 63.48642],
[-1.54635, 63.46643]
];
const result = latLngCoords.map(([lat, lng]) => ({ lat, lng}));
console.log(result);