簡體   English   中英

Console.log Object 中的數組值

[英]Console.log Array value in Object

我有以下 object。

 let obj = { 'app': ['placementId'], 'app2': ['siteId'], 'app3': ['channel_id'], }; function search(y) { return Object.keys(obj).filter((x, id, arr) => { console.log(obj['app'][0]) // returns 'placementId' if (x == y) { return obj[y][0] // returns ['app'] } }) }; let result = search('app'); console.log(result);

我真的不明白為什么 function 返回 ['app'] 而不是 placementId,就像在 console.log 語句中那樣。 謝謝!

Filter不像你想象的那樣工作。 return obj[y][0]不會像您的評論所說的那樣返回['app'] .filter可以。

過濾器接受一個數組,並將保留或丟棄其中的每個元素,具體取決於您返回truefalse (或至少是“真”或“假”)。 在這里,您從['app', 'app2', 'app3']開始,在過濾器內部,您return obj['app'][0] ,即['placementId'] 這是“真實”的東西(意思是,不是假/空/未定義),所以保留了'app' ,並丟棄了 rest。 起始數組是['app', 'app2', 'app3'] ,過濾后的數組是['app']

你想要做的事情可以簡單地通過這種方式完成:

 let obj = { 'app': ['placementId'], 'app2': ['siteId'], 'app3': ['channel_id'], }; const search = y => obj[y][0]; let result = search('app'); console.log(result);

您應該返回obj[x]obj[y] ,因為當您傳遞Obj[key]時,它會給出值。 您試圖給出錯誤的 output。

 let obj={ 'app': ['placementId'], 'app2': ['siteId'], 'app3': ['channel_id'], }; function search(y){ return Object.keys(obj).filter((x, id, arr)=> { if(x===y) { console.log(x,y); //gives out 'app app' console.log(obj[x]); //gives out [placementId] console.log(obj[x][0]); //gives out placementId return obj[y] } }) }; console.log(search('app')); //filter will only give that item (out of multiple), where conditions matched, so output is 'app' (in the item out of all, where condition matched);

因為過濾器回調將 boolean 值返回到過濾器數組。 如果你想先通過鍵找到它應該是這樣的:

let obj={
  'app': ['placementId'],
  'app2': ['siteId'],
  'app3': ['channel_id'],
};
    
function search(y){
  return obj[Object.keys(obj).find((x)=> x === y)][0];
};
    
search('app');

在當前情況下無需使用過濾器 function:

function search(y){
 return obj[y][0]
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM