2017-10-02 13 views
0

matchの結果をfilterに返す必要があります。私はforEachを試しましたが、何らかの理由でスクリプトをクラッシュさせてしまいました。私は解決できないようです。 filterのログにelement.match(/regex/)[1]が記録されていれば、必要な出力が記録されます。しかし、私がそれを返すと、文字列全体が返されます(マッチだけでなく)。コードは次のとおりです。Javascript - 一致結果を返すfilter()の取得方法

let myAr = ['{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"100000077777226","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AauUajLpeWuhLBG3jk4ypnhABBcEcbN4M8Z2F6J_CQaQXEhPwL-3j1_dX5vhAleK3K7rjlzqJwnG4xGGaGdFk7Eb","coeff2_action":"1","coeff2_pv_signature":"1509941759"}', 
     '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"711427743","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasHfdsp_Gkdbs3_B4K-_5cN8Y0ZqJPVdm4MYXBzUoXs5QyNoPir8LEYK_RsMpQMxwI","coeff2_action":"1","coeff2_pv_signature":"1509941759"}', 
     '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"500890765","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasBuRKr2vnMecj6ozdELAcZnUPL1FD3ojLSVrYrTckKy_pB2HekM693oJwKD0yH41Y","coeff2_action":"1","coeff2_pv_signature":"1509941759"}', 
     ]; 

let resultAr = myAr.filter(function(element) { 
     if (element != '#' && element != null) { 
      console.log(element.match(/eng_tid":"(\d*)",/)[1]); // this logs what I want 
      return element.match(/eng_tid":"(\d*)",/)[1]; // this doesn't return what I want 
     } else { 
      return false; 
     } 
    }); 
console.log(resultAr); 

最初のコンソールロガーの出力を返すにはどうすればよいですか?

+1

あなたは 'マップ'を考えていますか? 'filter'は_modified_要素の配列を返しません。名前が暗示するように、_filters_それらの要素だけをフィルタリングします。また、何か理由はありますか?JSONを解析して正規表現に依存するだけではありませんか? – Xufox

+0

それもあります。 JSONはHTMLのタグのデータ属性から来ているので、私の脳はJSONモードではあまりありませんでした。 – xendi

答えて

1

「フィルタ」ではなく「マップ」を使用してください。

let myAr = ['{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"100000077777226","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AauUajLpeWuhLBG3jk4ypnhABBcEcbN4M8Z2F6J_CQaQXEhPwL-3j1_dX5vhAleK3K7rjlzqJwnG4xGGaGdFk7Eb","coeff2_action":"1","coeff2_pv_signature":"1509941759"}', 
    '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"711427743","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasHfdsp_Gkdbs3_B4K-_5cN8Y0ZqJPVdm4MYXBzUoXs5QyNoPir8LEYK_RsMpQMxwI","coeff2_action":"1","coeff2_pv_signature":"1509941759"}', 
    '{"engagement":{"eng_type":"1","eng_src":"2","eng_tid":"500890765","eng_data":[]},"coeff2_registry_key":"0406","coeff2_info":"AasBuRKr2vnMecj6ozdELAcZnUPL1FD3ojLSVrYrTckKy_pB2HekM693oJwKD0yH41Y","coeff2_action":"1","coeff2_pv_signature":"1509941759"}', 
    ]; 

let resultAr = myAr.map(function(element) { 
    if (element != '#' && element != null) { 
     return element.match(/eng_tid":"(\d*)",/)[1]; 
    } else { 
     return false; 
    } 
}); 
console.log(resultAr); 
+0

それは彼女を持っています。ありがとう – xendi

関連する問題