我有一个如下数组: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']。
答案 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 & 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
}, []))