从基于属性的数组中获取对象

时间:2016-03-18 12:11:46

标签: javascript jquery d3.js

我正在尝试创建一个函数,以便在定义属性时从对象数组中获取特定对象。通过从下拉列表中选择值来定义属性。我用来定义值的函数是一个循环,我从这个答案得到了:Get JavaScript object from array of objects by value or property

在console.log中,我可以看到我传递给函数定义的两个参数。但是该功能无效。这是为什么?

我的代码:https://plnkr.co/edit/rnUbLXa4W0FC4fjuCzB5?p=preview

代码也在下面:

<!doctype html>
    <html>
    <head>
        <script src="http://d3js.org/d3.v3.min.js"></script>
        <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    </head>
    <body>

    <div id="#yvalue"></div>
    <br/><br/>
    <select class="inds">
    <option value="">- Select -</option>
    <option value="27706">A</option>
    <option value="97306">B</option>
    <option value="44706">C</option>
    <option value="30006">D</option>
    </select>


    <script>

    var section;

    var yax;

    function getByValue(arr, value) {
      for (var i=0, iLen=arr.length; i<iLen; i++) {
        if (arr[i].b == value) return arr[i];
      }
    };

    d3.csv("yaxis.csv", function(yvals){
      yax = yvals;

    $('.inds')
      .on("change", function () {
      section = $(this).val();
      section = +section;        

      currentyval = getByValue(yax, section);

      console.log("yax: ", yax);
        console.log("section: ", section);
      console.log("currentyval:", currentyval);

    }); 

    });
    </script>
    </body>
    </html>

yaxis.csv:

id,axisen,axissp,axisfr
    38506,%,%,%
    38606,%,%,%
    38906,%,%,%
    44706,%,%,%
    45106,%,%,%
    73506,%,%,%
    101006,%,%,%
    101606,%,%,%
    101706,%,%,%
    101806,%,%,%
    142506,%,%,%
    146106,%,%,%
    146306,%,%,%
    48706,% ages 15 and older,% de 15 años de edad y mayores,% 15 ans et plus
    48806,% ages 15 and older,% de 15 años de edad y mayores,% 15 ans et plus
    101406,% ages 15 and older,% de 15 años o más,% 15 ans et plus
    148206,% ages 15 and older,% de 15 años o más,% 15 ans et plus
    148306,% ages 15 and older,% de 15 años o más,% 15 ans ou plus
    147906,% ages 15-24,% jóvenes entre 15 y 24,% de 15-24 ans
    58006,% ages 15-49,entre 15-49 años,% 15-49 ans
    23806,% ages 25 and older,% de 25 años de edad y mayores,% des 25 ans et plus
    23906,% ages 25 and older,% de 25 años y mayores,% des 25 ans et plus
    24006,% ages 25 and older,% de 25 años y mayores,% des 25 ans et plus
    112206,% ages 5-14,% de niños y niñas de entre 5 y 14 años,% 5-14 ans
    31706,% held by women,% ocupados por mujeres,% de femmes
    52606,% of GDP,% del PIB,% du PIB
    53506,% of GDP,% del PIB,% du PIB
    53906,% of GDP,% del PIB,% du PIB
    65606,% of GDP,% del PIB,% du PIB
    111306,% of GDP,% del PIB,% du PIB
    127606,% of GDP,% del PIB,% du PIB
    133206,% of GDP,% del PIB,% du PIB
    149206,% of GDP,% del PIB,% du PIB
    97306,% of GNI,% del INB,% du RNB
    99106,% of GNI,% del INB,% du RNB
    127706,% of GNI,% del INB,% du RNB
    135606,% of labour force,% de la fuerza de trabajo,% de la population active
    140606,% of labour force,% de la fuerza de trabajo,% de la population active
    110906,% of labour force ages 15-24,% entre 15 y 24 años,% de la population active âgée de 15 à 24 ans
    64306,% of one-year-olds,% de niños y niñas de 1 año de edad,% âgés de 1 an
    64406,% of one-year-olds,% de niños y niñas de 1 año de edad,% âgés de 1 an
    43606,% of population,% de la población,% de la population
    133006,% of preschool-age children,% de niños en edad pre-escolar,% d'enfants en âge préscolaire
    46106,% of primary school cohort,% de la cohorte en la escuela primaria,% de la cohorte d'enfants en âge de fréquenter l'école primaire
    63206,% of primary school-age population,% de la población en edad de asistir a la escuela primaria,% de la population en âge de fréquenter l'école primaire
    144806,% of rural population,% de la población rural,% de la population rurale
    63306,% of secondary school-age population,% de la población en edad de asistir a la escuela secundaria,% de la population en âge de fréquenter l'école secondaire
    123806,% of statutory pension age population,% de la población en edad legal de jubilación,% de la population en âge légal de départ à la retraite
    63406,% of tertiary school-age population,% de la población en edad de asistir a la escuela terciaria,% de la population en âge de fréquenter l'enseignement supérieur
    30006,% of total,% del total,% du total
    43006,% of total employment,% del empleo total,% de l'emploi total
    148006,% of total employment,% de empleo total,% de l'emploi total
    148106,% of total employment,% de empleo total,% de l'emploi total
    150606,% of total employment,% del empleo total,% de l'emploi total
    150706,% of total employment,% del empleo total,% de l'emploi total
    153706,% of total employment,% del empleo total,% des emplois
    100806,% of total land area,% de superficie terrestre,% de la surface des sols
    97106,% of total renewable water resources,% del total de recursos hídricos renovables,% du total des sources renouvelables d'eau
    147206,% of total tertiary enrolment,% de la matriculación total en educación terciaria,% des inscriptions totales dans l'enseignement supérieur
    127906,% under age 5,de menores de 5 años,% moins de 5 ans
    115606,2010=100,2010=100,2010=100
    136706,2011 PPP $,PPA en US$ de 2011,$ PPA 2011
    143306,2011 PPP $ billions,PPA en miles de millones de US$ de 2011,milliards de $ PPA 2011
    123506,2011 PPP$,PPA en US$ de 2011,$ PPA 2011
    123606,2011 PPP$,PPA en US$ de 2011,$ PPA 2011
    141706,2011 PPP$,$ de PPA en 2011,$ PPA 2011
    145306,average annual per million people,promedio anual por cada millón de personas),moyenne par an pour un million de personnes
    149406,average annual per million people,promedio anual por cada millón de personas,moyenne annuelle pour un million de personnes
    36806,"births per 1,000 women ages 15-19",nacimientos por cada 1.000 mujeres de entre 15 y 19 años,naissances pour 1 000 femmes âgées de 15 à 19 ans
    128106,days,días,jours
    89006,"deaths per 100,000 live births",muertes por cada 100.000 nacidos vivos,décès pour 100 000 naissances vivantes
    38406,index value,valor del índice,valeur de l'indice
    68606,index value,valor del índice,valeur de l'indice
    71406,index value,valor del índice,valeur de l'indice
    71506,index value,valor del índice,valeur de l'indice
    71606,index value,valor del índice,valeur de l'indice
    72206,index value,valor del índice,valeur de l'indice
    103606,index value,valor del índice,valor del índice
    103706,index value,valor del índice,valor del índice
    127806,index value,valor del índice,valor del índice
    136806,index value,valor del índice,valor del índice
    136906,index value,valor del índice,valor del índice
    137006,index value,valor del índice,valor del índice
    137506,index value,valor del índice,valor del índice
    137906,index value,valor del índice,valor del índice
    138806,index value,valor del índice,valor del índice
    49006,male to female births,nacimientos de niños por cada nacimiento de niña,rapport naissances masculines/féminines
    44206,millions,millones,millions
    132706,millions,millones,millions
    132806,millions,millones,millions
    46206,number of pupils per teacher,número de alumnos por profesor,nombre d’élèves par enseignant
    57206,"per 1,000 live births",por cada 1.000 nacidos vivos,pour 1 000 naissances vivantes
    57506,"per 1,000 live births",por cada 1.000 nacidos vivos,pour 1 000 naissances vivantes
    57806,"per 1,000 people",por cada 1.000 personas,pour 1 000 personnes
    57906,"per 1,000 people",por cada 1.000 personas,pour 1 000 personnes
    110806,"per 1,000 people",por cada 1.000 personas,pour 1 000 personnes
    46006,per 100 people,por cada 100 personas,pour 100 personnes
    121206,per 100 people ages 15-64,por cada 100 personas de entre 15 y 64 años,pour 100 personnes de 15 à 64 ans
    122006,per 100 people ages 15-64,por cada 100 personas de entre 15 y 64 años,pour 100 personnes de 15 à 64 ans
    61006,"per 100,000 people",cada 100.000,pour 100 000 personnes
    102506,"per 100,000 people",por cada 100.000 personas,pour 100 000 personnes
    112506,"per 100,000 people",por cada 100.000,pour 100 000 personnes
    112606,"per 100,000 people",por cada 100.000,pour 100 000 personnes
    128306,"per 100,000 people",cada 100.000 personas,pour 100 000 personnes
    150206,"per 100,000 people",por cada 100.000 personas,pour 100 000 personnes par an
    21806,thousands,miles,milliers
    102006,thousands,miles,milliers
    111106,thousands,miles,milliers
    27706,tonnes,toneladas,tonnes
    24106,years,años,années
    24206,years,años,années
    47906,years,años,années
    69206,years,años,années
    69706,years,años,années
    103006,years,años,années
    120606,years,años,années
    121106,years,años,années
    123306,years,años,années
    123406,years,años,années

1 个答案:

答案 0 :(得分:2)

您正在将与对象属性 b 进行比较,但数组中的对象未定义此属性。更改您的代码以与 id 属性进行比较:

if (arr[i].id == value) return arr[i];