Невозможно вывести объект один раз в функцию, используя Array.filter с Vanilla JavaScript - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь создать функцию поиска, используя только Vanilla JavaScript. Это работает в веб-консоли браузера, но я не могу заставить его вывести объект, как только он будет включен в функцию.

У меня есть пользователь, который вводит поисковый запрос в форме HTML. Форма хранит значение в переменной _searchInput, которая хранится в хранилище сеансов. Когда я нахожусь в веб-консоли браузера и проверяю sessionStorag, он возвращает сохраненную переменную с ожидаемым значением. Однако, когда я пытаюсь вернуть переменную _results, она возвращает пустой массив.

Добавление для наглядности inputValue (); является функцией, которая проверяет, ввел ли пользователь значение, и вызывает searchFunc (); если поле поиска не пустое.

HTML

<form name="entryForm">
<input id="searchInput" type="text" label="Search" onclick="this.value = 
'' " />
<button id="searchBtn" onclick="inputValue();">Search</button>
<p id="response">I'm the value</p>
</form><br><br>

Массив объектов

const allInvItems = [{
"ProdId": "1",
"InvItemName": "T-shirt",
"GinNum": "640041 - T-shirt",
"QtyServUnit": "1",
"QtyCountUnit": "1",
"PurchUnit": "EA - Each",
"CountUnit": "EA - Each",
"SellUnit": "EA - Each",
"CountFrequency": "D - Daily",
"StandCost": "10.6049"
 }, 
 { 
 "ProdId": "2",
 "InvItemName": "Shorts",
 "GinNum": "75043011 - Shorts",
 "QtyServUnit": "8",
 "QtyCountUnit": "1",
 "PurchUnit": "PK - Pack",
 "CountUnit": "EA - Each",
 "SellUnit": "EA - Each",
 "CountFrequency": "D - Daily",
 "StandCost": "2.6049"

 }];    

Функция поиска: вот где у меня проблемы. я function searchFunc () {

const storedInput = sessionStorage.getItem('_searchInput').value;

let _results = allInvItems.filter(function(obj) {
return obj.InvItemName == storedInput;
});

}

Я ожидаю, что он отфильтрует все другие объекты, кроме тех, которые хранятся в захваченной переменной.

1 Ответ

0 голосов
/ 10 июня 2019

Вы обращаетесь к значению ключа sessionStorage _searchInput неправильно.Чтобы получить доступ к значению ключа в sessionStorage, используйте sessionStorage.getItem('_searchInput').

const allInvItems = [{
    "ProdId": "1",
    "InvItemName": "T-shirt",
    "GinNum": "640041 - T-shirt",
    "QtyServUnit": "1",
    "QtyCountUnit": "1",
    "PurchUnit": "EA - Each",
    "CountUnit": "EA - Each",
    "SellUnit": "EA - Each",
    "CountFrequency": "D - Daily",
    "StandCost": "10.6049"
  },
  {
    "ProdId": "2",
    "InvItemName": "Shorts",
    "GinNum": "75043011 - Shorts",
    "QtyServUnit": "8",
    "QtyCountUnit": "1",
    "PurchUnit": "PK - Pack",
    "CountUnit": "EA - Each",
    "SellUnit": "EA - Each",
    "CountFrequency": "D - Daily",
    "StandCost": "2.6049"

  }
];

sessionStorage.setItem('_searchInput', 'T-shirt');
const storedInput = sessionStorage.getItem('_searchInput');

const output = allInvItems.filter(({
  InvItemName
}) => InvItemName === storedInput);
console.log(output);

Примечание. Запустите код в своем браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...