2017-05-21 44 views
0

在下面的示例中,當使用getData();時,是否可以在新函數中訪問包含在其對象映射中的數據 - 即。 useData(); - 這是一個參數getData();如何將數據從一個函數傳遞到另一個函數,該函數是第一個函數的參數

const getData = (useData) => { 

    const myData = { 
    0: { title: 'Hello' }, 
    1: { title: 'World!' } 
    }; 

    Object.keys(myData).map((item) => { 
    useData(); 
    }); 
} 

getData(console.log(
    /** 
    * Somehow access data represented by `myData` and `item` 
    * in above object map along the lines of `myData[item].title` 
    */ 
)); 

回答

1

你想達到這樣的目的嗎?

您可以使用map函數中的某些參數調用useData。在這種情況下,您不能調用console.log等函數作爲getData函數的參數。

const getData = useData => { 
    const myData = { 
     0: { title: "Hello" }, 
     1: { title: "World!" }, 
    }; 

    Object.keys(myData).map(item => { 
     useData(myData[item]); 
    }); 
}; 
getData(console.log); 
0

是的,那是默認行爲。但是您需要通過functionconsole.log)而不是函數調用(console.log()),並且僅在稍後調用它。

const getData = (useData) => { 
 

 
    const myData = { 
 
    0: { title: 'Hello' }, 
 
    1: { title: 'World!' } 
 
    }; 
 

 
    Object.keys(myData).map((item) => { 
 
    useData.apply(console, [item]); 
 
    useData.apply(console, [ myData[item].title ]); 
 
    //or useData(myData[item].title) 
 
    }); 
 
} 
 

 
getData(console.log);

getData(console.log('something')); 

是相同:

let x = console.log('something'); 
getData(x); 
相關問題