带条件的箭头函数不返回数组的所有元素

时间:2019-02-24 23:06:09

标签: javascript arrays arrow-functions ecmascript-7

我有一个如下数组:var arr = ['one', 'two', ['three', 'four']];

在尝试使用箭头函数返回每个元素时,它返回undefined作为第三个元素,而不是元素值。我试图对其进行重组,但是没有一个返回两个数组的所有元素。我可以使用for循环,执行逻辑来推送每个元素,但是我想了解和学习如何在这种情况下使用箭头功能。

arr.map(e => {
 if(typeof(e) == "object"){
    e.map(t => t)
  } else{ return e; }
})

真的很感谢您对此事进行一些澄清。预期的结果是一个如下数组:['one','two','three','four']。

2 个答案:

答案 0 :(得分:1)

Array.prototype.map()并未设计和实现为扁平化数组。即使.map()并未从问题代码处的e.map(t => t)回调函数中return.map()平整数组arr.map(e => { if(typeof(e) == "object"){ e.map(t => t) // no value is `return`ed here } else{ return e; } })

Array

可以使用多种方法和Array方法来展平.flat(),包括.flatMap().concat()add_action( 'woocommerce_after_add_to_cart_button', 'add_content_after_addtocart' ); function add_content_after_addtocart() { $current_product_id = get_the_ID(); $product = wc_get_product( $current_product_id ); $checkout_url = WC()->cart->get_checkout_url(); if( $product->is_type( 'simple' )) { ?> <script> jQuery(function($) { $(".custom-checkout-btn").on("click", function() { $(this).attr("href", function() { return this.href + '&quantity=' + $('input.qty').val(); }); }); }); </script> <?php echo '<a href="'.$checkout_url.'?add-to-cart='.$current_product_id.'" class="single_add_to_cart_button button alt">Buy &amp; Checkout</a>'; } } ,例如,参见Merge/flatten an array of arrays in JavaScript?

答案 1 :(得分:0)

要获得预期的结果,请使用下面的reduce选项返回数组中所有数组元素

var arr = ['one', 'two', ['three', 'four']];

console.log(arr.reduce((acc, v) => {
  typeof(v) == 'object' ? acc.push(...v) : acc.push(v)
  return acc
}, []))



           

codepen-https://codepen.io/nagasai/pen/NJKdKv