2016-04-03 5 views
-1

У меня есть json object idAndNames.json;

[ 

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

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

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

] 

я хочу, чтобы отфильтровать его идентификатор и имя

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)); 

, но я не могу фильтровать по идентификатору или именизначение фильтра от объекта json

при valueItem = 1; целое число, я получаю сообщение об ошибке: «Ожидаемый массив или итерацию объект значений»

при valueItem = «1» строка оно не дает никаких ошибок, это просто не работает

вы можете помочь мне найти правильный путь? спасибо

ответ

1

Я создал скрипку с вашим кодом и он работает с междунар или строкой: 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 и name item => checkFilter (item.get ('id'), valueItem) просто для id, что если i хотите использовать одну и ту же функцию для всех значений массива? – user2960407

0

Если вы использовали только Неизменными для решения этой задачи, я бы избежать этого и просто использовать ES6 синтаксис:

Я обновленный checkFilter вернуть функцию так, что она может работать на каждом фильтруются элемент. Все, что вам нужно сделать, это пройти в valueItem

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

DEMO

Смежные вопросы