7

underscore.js を使用してこの JavaScript オブジェクトをフィルタリングしようとしていますが、なぜ機能しないのかわかりません。これは、"how" を含む質問の値を見つけるためのものです。

  var questions = [
    {question: "what is your name"},
    {question: "How old are you"},
    {question: "whats is your mothers name"},
    {question: "where do work/or study"},
    ];

var match = _.filter(questions),function(words){ return words === "how"});

alert(match); // its mean to print out -> how old are you?

完全なコードはこちらです (underscore.js は既に含まれています): http://jsfiddle.net/7cFbk/

4

3 に答える 3

15
  1. で関数呼び出しを閉じました.filter(questions)。ラスト)はあってはならない。
  2. フィルタリングは、配列を反復処理し、各要素で関数を呼び出すことによって機能します。{question: "..."}ここで、各要素は文字列ではなくオブジェクトです。
  3. 質問の文字列に特定の文字列が含まれているかどうかを確認したいのに対し、等しいかどうかを確認します。大文字と小文字を区別しないことも必要です。
  4. オブジェクトをアラートすることはできません。console.log代わりにコンソールを使用してください。

だから:http://jsfiddle.net/7cFbk/45/

var questions = [
    {question: "what is your name"},
    {question: "How old are you"},
    {question: "whats is your mothers name"},
    {question: "where do work/or study"},
];

var evens = _.filter(questions, function(obj) {
    // `~` with `indexOf` means "contains"
    // `toLowerCase` to discard case of question string
    return ~obj.question.toLowerCase().indexOf("how");
});

console.log(evens);
于 2012-08-12T19:12:03.583 に答える
3

ここに作業バージョンがあります:

var questions = [
    {question: "what is your name"},
    {question: "How old are you"},
    {question: "whats is your mothers name"},
    {question: "where do work/or study"},
];

var hasHow = _.filter(questions, function(q){return q.question.match(/how/i)});

console.log(hasHow);

修正された問題:

  • 括弧が正しく配置されていませんでした。
  • console.logアラートの代わりに使用します。
  • 各質問を反復するときは、おそらく正規表現を使用して「方法」を見つける必要があります。
  • _filter配列を反復処理します。配列にはオブジェクトが含まれており、各オブジェクトには質問が含まれています。渡す関数は_filter、各オブジェクトを同じ方法で検査する必要があります。
于 2012-08-12T19:12:02.193 に答える
0
data = {
    'data1' :{
        'name':'chicken noodle'
     },
    'data2' :{
        'name':'you must google everything'
     },
    'data3' :{
        'name':'Love eating good food'
     }
}

_.filter(data,function(i){

    if(i.name.toLowerCase().indexOf('chick') == 0){

        console.log(i);

    }else{

        console.log('error');

    }

})
于 2013-02-19T07:52:33.250 に答える