[英]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
可以。
過濾器接受一個數組,並將保留或丟棄其中的每個元素,具體取決於您返回true
或false
(或至少是“真”或“假”)。 在這里,您從['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.