javascript - es6 code broken in es5 -


i have been trying translate code es6 es5 because of framework restrictions @ work... although have been quite struggling locate problem is. reason code not work quite same, , there no errors either ...

can tell me if have translated ?

this es6 code :

function filterfunction(items, filters, stringfields = ['title', 'description'], angular = false) {     // filter keys of filters parameter     const filterkeys = object.keys(filters);      // set mutable filtered object items     let filtered;      // angular doesn't deep clones... *sigh*     if (angular) {         filtered = items;     } else {         filtered = _.clonedeep(items);     }      // each key in supplied filters     (let key of filterkeys) {         if (key !== 'textinput') {             filtered = filtered.filter(item => {                  // make sure have filter by...                 if (filters[key].length !== 0) {                     return _.intersection(filters[key], item[key]).length >= 1;                 }                  return true;             });         }          // if we're @ textinput, handle things differently         else if (key === 'textinput') {             filtered = filtered.filter(item => {                 let searchstring = "";                  // each field specified in strings array, build string search through                 (let field of stringfields) {                     // handle arrays differently                     if (!array.isarray(item[field])) {                         searchstring += `${item[field]} `.tolowercase();                     } else {                         searchstring += item[field].join(' ').tolowercase();                     }                 }                  // return item if string matches our input                 return searchstring.indexof(filters[key].tolowercase()) !== -1;             });         }     }     return filtered; } 

and code translated partially 99% work ..

function filterfunction(items, filters, stringfields, angular) {     // filter keys of filters parameter     var filterkeys = object.keys(filters);      // set mutable filtered object items     var filtered;      // angular doesn't deep clones... *sigh*     if (angular) {         filtered = items;     } else {         filtered = _.clonedeep(items);     }      // each key in supplied filters     (var key = 0 ;  key < filterkeys.length ; key ++) {          if (filterkeys[key] !== 'textinput') {             filtered = filtered.filter( function(item) {                  // make sure have filter by...                 if (filters[filterkeys[key]].length !== 0) {                     return _.intersection(filters[filterkeys[key]], item[filterkeys[key]]).length >= 1;                 }                  return true;             });         }          // if we're @ textinput, handle things differently         else if (filterkeys[key] === 'textinput') {             filtered = filtered.filter(function(item) {                 var searchstring = "";                  // each field specified in strings array, build string search through                 (var field = 0; field < stringfields.length; field ++) {                     // handle arrays differently                     console.log(field);                     if (!array.isarray(item[stringfields[field]])) {                         searchstring += item[stringfields[field]] + ' '.tolowercase();                     } else {                         searchstring += item[stringfields[field]].join(' ').tolowercase();                     }                 }                  // return item if string matches our input                 return searchstring.indexof(filters[filterkeys[key]].tolowercase()) !== -1;             });         }     }     return filtered; } 

these 2 lines

searchstring += `${item[field]} `.tolowercase(); searchstring += item[stringfields[field]] + ' '.tolowercase(); 

are not equivalent indeed. apply tolowercase method on parts of string, you'll need wrap es5 concatenation in parenthesis:

searchstring += (item[stringfields[field]] + ' ').tolowercase(); 

or, blanks cannot lowercased anyway, use

searchstring += item[stringfields[field]].tolowercase() + ' '; 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -