【问题标题】:Conditional Statement in a map function with es6使用 es6 的 map 函数中的条件语句
【发布时间】:2021-07-03 16:13:00
【问题描述】:

我需要在 map 函数中使用条件语句

我在 SVG 中复制 path d 的每个单个值,但我不希望数组的对象 ML 发生这种情况

这里是一个字符串数组的例子。

M 175 0 L 326.55444566227675 87.50000000000001 L 326.55444566227675 262.5 L 175 350 L 23.445554337723223 262.5 L 23.44555433772325 87.49999999999999 L 175 0

这是我没有条件语句的例子

let neWd = array.map(x => { return x * 2; }).reverse().join(' ')

我如何在 e6 中写下这个?我不希望元素 LM 发生乘法(类似于 if x ? 'M' : 'L' return

【问题讨论】:

  • 您可以像在任何其他上下文中编写条件语句一样执行此操作。 .map() 回调中的代码没有什么特别之处。
  • 你能添加一个array的例子吗?

标签: javascript arrays if-statement map-function


【解决方案1】:

我不确定你为什么还要使用reverse 函数,反转 svg 路径稍微复杂一些。

此代码 sn-p 将所有数字加倍,但保持 ML 不变。

实际上将 svg 路径放大了 200%

var array = "M 175 0 L 326.55444566227675 87.50000000000001 L 326.55444566227675 262.5 L 175 350 L 23.445554337723223 262.5 L 23.44555433772325 87.49999999999999 L 175 0".split(" ");

let neWd = array.map(x => {
	if (x === 'M' || x === 'L'){
		return x;
	}else{
		return x * 2;
	}
}).join(' ')

console.log(neWd);

【讨论】:

  • 是的,没有必要为问题添加 reverse.join,这是因为我需要在 dom 中应用这些值,以便映射我转换为数组,然后再次转换为字符串
  • join 就像您说从数组返回字符串一样有意义。只是想在 svg 路径上强调 reverse 不会反转路径。
【解决方案2】:

是的,就这么做:

let neWd = array.map(x => {
    if (x == "M" || x == "L")
        return x; // unchanged
    else
        return String(parseInt(x, 10) * 2);
}).reverse().join(' ')

【讨论】:

  • 你还没有展示你的案例(array 的一个例子)所以我不能更专业的回答。但是如果你愿意,你可以自己edit
  • this is the array converted in a string M 175 0 L 326.55444566227675 87.50000000000001 L 326.55444566227675 262.5 L 175 350 L 23.445554337723223 262.5 L 23.44555433772325 87.49999999999999 L 175 0
  • 这是一个字符串,而不是一个数组。有没有解析成[{op:"M", vals:[175,0]}, {op:"L", vals:[326.55444566227675, 87.5]}, …]之类的数据结构?
【解决方案3】:

使用 Es6 语法

let neWd = array.map((x) => (x == "M" || x == "L") ?
x : String(parseInt(x, 10) * 2)).reverse().join(' ')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多