JavaScript中的Map和从数组中删除逗号

6
在我浏览器中运行的以下简短脚本中:

var ages = [23, 22, 4, 101, 14, 78, 90, 2, 1, 89, 19];

const ages3 = ages.map(function(age) {
    return Math.sqrt(age) + "<br/>";
});

document.write(ages3);

我希望以最简明扼要的方式打印一列平方根值 (最好使用上文提到的 map 方法)。我尝试了链接 join,例如 return age.join(' ').Math.sqrt(age) + "<br/>"; 但是没有成功 (没有输出结果)。
谢谢。
5个回答

13
我的解决方案使用joinmap
var ages = [23, 22, 4, 101, 14, 78, 90, 2, 1, 89, 19];

document.write(
  ages.map(a => Math.sqrt(a))
  .join("<br>")
);

我觉得这个解决方案非常简洁,正好符合你的要求。

我最喜欢这个。它是最简洁的。不过我可能会添加一些换行符。 - Evert

5
如果你想要生成一个HTML字符串输出,应该使用reduce。而.map则是用于将一个数组转换成另一个数组的情况。

const ages = [23, 22, 4, 101, 14, 78, 90, 2, 1, 89, 19];
const ages3 = ages.reduce(function(accum, age) {
    return accum + Math.sqrt(age) + "<br/>";
}, '');
document.write(ages3);


3

你走在了正确的道路上。只需要join()新映射的数组ages3

var ages = [23, 22, 4, 101, 14, 78, 90, 2, 1, 89, 19];

const ages3 = ages.map(function(age) {
    return Math.sqrt(age) + "<br/>";
});

document.write(ages3.join(' '));


2

或者你可以使用array.from

const ages = [23, 22, 4, 101, 14, 78, 90, 2, 1, 89, 19];
document.write(Array.from(ages, x => Math.sqrt(x)).join('<br\>'));


1
虽然这样做可以实现功能,但通常你应该在数组上使用 map,在类似数组的对象上使用 fromfrom 通常用于将类似数组的对象转换为具有相同内容的实际数组,而 map 则用于根据原始内容从另一个数组创建数组并生成不同的内容。 - BoltKey

0

如果你想在结果之间换行,那么你可以在join函数中传递<br />,就像这样:return Math.sqrt(age).join('<br>'); 如果你想在结果之间加空格,那么你可以在join函数中传递空字符串,就像这样:return Math.sqrt(age).join(' '); 或者如果你什么都不想加,那么你可以在join函数中传递空,就像这样:return Math.sqrt(age).join('');

var ages = [23, 22, 4, 101, 14, 78, 90, 2, 1, 89, 19];

const ages3 = ages.map(function(age) {
    return Math.sqrt(age).join('<br\>');
    // return Math.sqrt(age).join(' ');
    // return Math.sqrt(age).join('');
});

document.write(ages3);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接