我正在开发一个涉及使用预加载数据的项目。 这部分的目标是从json中删除一个对象:
function cclever_show_insurance_step_if_rentals() {
if ( function_exists( 'wc_checkout_add_ons' ) ) {
// set to false first
$cat_check = false;
// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
// replace 'rentals' with your category's slug
if ( has_term( 'rentals', 'product_cat', $product->id ) ) {
$cat_check = true;
// we only need one "true" to leave
break;
}
}
// if a product in the cart is in our category, remove the add-ons
if ( $cat_check ) {
add_action('woocommerce_multistep_checkout_before_order_info', 'cclever_add_insurance_custom_step');
function cclever_add_insurance_custom_step( $checkout ) {
wc_get_template( 'checkout/insurance.php', array( 'checkout' => $checkout ) );
}
}
}
}
add_action( 'woocommerce_before_checkout_form', 'cclever_show_insurance_step_if_rentals' );
我通常会从中删除一个对象:
var obj = {'objectName0':[object0, object1, object], 'objectName1':[object, object, object], 'objectName2':[object, object, object]}
但问题是我稍后会在使用
时循环播放它delete obj[Object.keys(obj)[i]];
并且我们都知道这会返回“未定义”。
另外我要注意的是,当我试图删除这个对象时,我不知道它的名字,这就是我使用Object.keys();
的原因答案 0 :(得分:0)
将对象视为不可变对象并创建一个新对象,删除要删除的键而不是将其变异。您可以使用下划线的_.omit()。或者做一个等效的辅助函数。
答案 1 :(得分:0)
我建议创建一个新对象,但不要在复制整个对象时复制该对象。例如,假设你有对象,
var obj = {
object1: {...},
object2: {...},
object3: {...}
};
您想要删除object2
。只需循环说,
var new_obj = {};
for (var i in obj) {
if (i != object2) {
new_obj.i = obj.i;
}
}