我想在javascript数组上使用map()
函数,但我希望它以相反的顺序运行。
原因是,我在Meteor项目中渲染堆叠的React组件,并希望顶层元素首先渲染,而其余元素在下面加载。
var myArray = ['a', 'b', 'c', 'd', 'e'];
myArray.map(function (el, index, coll) {
console.log(el + " ")
});
打印出a b c d e
,但我希望有一个打印e d c b a
的mapReverse()
有什么建议吗?
答案 0 :(得分:84)
如果您不想反转原始数组,可以对其进行浅层复制,然后反转数组的映射,
myArray.slice(0).reverse().map(function(...
答案 1 :(得分:11)
您可以使用Array.prototype.reduceRight()
var myArray = ["a", "b", "c", "d", "e"];
var res = myArray.reduceRight(function (arr, last, index, coll) {
console.log(last, index);
return (arr = arr.concat(last))
}, []);
console.log(res, myArray)
答案 2 :(得分:8)
通过使用spread syntax,您可以使数组比Array.prototype.map和Array.prototype.slice更容易反转。
例如:
{
const myArray = ['a', 'b', 'c', 'd', 'e'];
[...myArray].reverse().map(el => console.log(el + " "));
}
答案 3 :(得分:5)
根本不改变数组,这是我想出的单层O(n)解决方案:
myArray.map((val, index) => myArray[myArray.length - 1 - index]);
答案 4 :(得分:2)
我更喜欢编写mapReverse函数一次,然后使用它。 此外,这并不需要复制数组。
.Net Standard
答案 5 :(得分:1)
具有命名回调功能
const items = [1, 2, 3];
const reversedItems = items.map(function iterateItems(item) {
return item; // or any logic you want to perform
}).reverse();
速记(无命名的回调函数)-箭头语法,ES6
const items = [1, 2, 3];
const reversedItems = items.map(item => item).reverse();
这是结果
答案 6 :(得分:1)
function mapRevers(reverse) {
let reversed = reverse.map( (num,index,reverse) => reverse[(reverse.length-1)-index] );
return reversed;
}
console.log(mapRevers(myArray));
I您将数组传递给Revers,然后在函数中返回反向数组。在地图cb中,您只需从传递的数组中获取索引值从10(长度)到1的数字即可
答案 7 :(得分:1)
我认为将 reverse()
键放在 map
工作之后。
tbl_products
.map((products) => (
<div
key={products.pro_id}
class="my-1 px-1 w-full md:w-1/2 lg:my-4 lg:px-4 lg:w-1/4 transform transition duration-500 hover:scale-105"
>
<article class="overflow-hidden rounded-lg border shadow">
<a href="#">
<img
alt="Placeholder"
class="block h-auto w-full px-5 pt-3"
src={products.product_img}
/>
</a>
</article>
</div>
))
.reverse();
就我而言,它正在运行
答案 8 :(得分:1)
你只需要在.slice(0).reverse()
前加上.map()
答案 9 :(得分:0)
这是我的TypeScript解决方案,它通过两次阻止遍历数组来实现O(n)效率,并且比其他解决方案更有效:
PHPMailer
在JavaScript中:
function reverseMap<T, O>(arg: T[], fn: (a: T) => O) {
return arg.map((_, i, arr) => fn(arr[arr.length - i - 1]))
}
答案 10 :(得分:0)
var myArray = ['a', 'b', 'c', 'd', 'e'];
var reverseArray = myArray.reverse()
reverseArray.map(function (el, index, coll) {
console.log(el + " ")
});
答案 11 :(得分:-1)
你可以先做myArray.reverse()。
Child
答案 12 :(得分:-2)
一个老问题,但对于新观众来说,这是使用map反转数组的最佳方法
var myArray = ['a', 'b', 'c', 'd', 'e'];
[...myArray].map(() => myArray.pop());