2016-04-03 238 views
-1

我有json对象idAndNames.json;

[ 

    { "id":"1", "name":"name1"}, 

    { "id":"2", "name":"name2"}, 

    { "id":"3", "name":"name3"} 

] 

我想通过ID和名称

function checkFilter(id,valueItem) { 

return id <= valueItem; 

} 
//i changed json to array with immutable.js -> fromJS(idAndNames); 

idAndNamesArray.filter(item => checkFilter(item.get('id'),valueItem)); 

对其进行过滤,但我不能按id或姓名过滤它json对象的过滤值

当valueItem = 1;整数i得到错误:“预期的数组或值的迭代对象”

时valueItem =“1”串它不给任何错误,它只是不工作

你能帮助我找到正确的方法是什么?谢谢

回答

1

我创建了一个拨弄你的代码,并将其与int或字符串的工作原理:https://jsfiddle.net/nyvbb4nd/1/

你在你的代码申报valueItem

var valueItem='1'; //1 
var result = idAndNamesArray.filter(item => checkFilter(item.get('id'),valueItem)); 
console.log(result); 
+0

你是正确的代码工作。我只是发现我失去了一些其他的东西感谢您的回应 – user2960407

+0

有没有办法使用checkFilter函数为id和名称item => checkFilter(item.get('id'),valueItem)仅用于id如果我想要为数组的所有值使用相同的函数? – user2960407

0

如果你只为这个任务中使用不可变的,我会避免它,只需使用ES6语法:

我已经更新checkFilter返回一个函数,以便它可以在每个过滤工作元件。所有你需要做的是通过在valueItem

const checkFilter = (valueItem) => (el) => el.id <= valueItem; 
let result = data.filter(checkFilter('2')); 

DEMO