在函数中传递函数参数

时间:2017-08-07 02:07:34

标签: javascript arrays

我有一个function filterArgReturnEvenElements(el) { return (typeof el === 'number') && !(el % 2); } function returnKeyWithArrayValue(arg, key){ return arg[key] instanceof Array; } function iterateThroughElements(arg, myFunc){ // if arg is an Array if (arg instanceof Array) { // if function exist then call specific function or callback if(myFunc && typeof(myFunc) == "function"){ return arg.filter(myFunc); // else if function doesnt exist, iterate through array and console.log all the items }else{ arg.forEach(item => console.log(item)); } } // if arg is an Object else if(arg instanceof Object) { // if function exist then call specific function or callback if(myFunc&& typeof(myFunc) == "function"){ return Object.keys(arg).filter(key => myFunc(arg, key)); // else if function doesnt exist, iterate through object and console.log all the items }else{ for(key in arg){ if(arg.hasOwnProperty(key)){ console.log(key + " : " + arg[key]); } } } } let arr = [1, 2, 3, 4, 5, 7]; let obj = { firstname: 'mik', lastname: 'lasner', age: 21, favorite: ['hiking', 'surfing', 'beach'] }; let output = iterateThroughElements(arr, filterArgReturnEvenElements); console.log(output); let output2 = iterateThroughElements(obj, returnKeyWithArrayValue); console.log(output2); let output3 = iterateThroughElements(arr); console.log(output); let output4 = iterateThroughElements(obj); console.log(output2); 函数,它接受一个数组或一个对象作为第一个参数。第二个参数有一个可选函数。

如果用户没有传入函数second参数,它将遍历元素和控制台记录所有元素。

如果用户传入函数,它将完全按照函数执行的操作。

这是我的代码:

filterArgReturnEvenElements

如上所示,returnKeyWithArrayValue函数将返回数组中偶数的项。

虽然{{1}}函数将返回具有数组值的对象中的键。

现在我的代码不起作用。你认为我哪里出错?请帮忙!

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您错过了一个括号,并且未定义callBack变量。

add_action( 'getmyevents', 'get_my_events' );
function get_my_events( $atts = [], $content = null ) {
    global $wpdb;
    // Values sent via ajax to calendar from my_events table

    // List of events
    $json = array();

    // Query that retrieves events
    $mytable = $wpdb->prefix . "my_events";        
    $myids = $wpdb->get_results( 'SELECT id, title, url, DATE_FORMAT( start, "%Y-%m-%d\T%H:%i:%s" ) as start, DATE_FORMAT( end, "%Y-%m-%d\T%H:%i:%s" ) as end, allDay FROM ' . $mytable );


    // sending the encoded result to success page
    echo json_encode( $myids, JSON_UNESCAPED_SLASHES );

    // return JSON
    return $json;
}