亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 each() 在對象數組中循環

使用 each() 在對象數組中循環

慕田峪9158850 2022-08-18 16:28:28
我正在處理下面的代碼。我正在嘗試篩選并獲取包含類似輸入字符串的項目項的索引和值,但它不起作用。var items =[  {item:"Saab", sku:"SA"},              {item:"Volvo", sku:"VO"},              {item:"BMW", sku:"BM"},              {item:"Toyota", sku:"TO"},              {item:"Honda", sku:"HO"},              {item:"Nissan", sku:"NI"},            ];            $("#filter").keyup(function () {    var filter = $(this).val();    $(items['item']).each(function (index, value) {        if (value.search(new RegExp(filter, "i")) < 0) {          // Do somethign        } else {           console.log(index);           console.log(value);        }    });});            <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><form id="live-search" action="" class="styled" method="post">  <fieldset>    <input type="text" class="text-input" id="filter" value="" />    <span id="filter-count"></span>  </fieldset></form>
查看完整描述

4 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

您可能必須將項目作為常規 javascript 變量引入,但不能作為 jquery 選擇器。


var items = [

  { item: "Saab", sku: "SA" },

  { item: "Volvo", sku: "VO" },

  { item: "BMW", sku: "BM" },

  { item: "Toyota", sku: "TO" },

  { item: "Honda", sku: "HO" },

  { item: "Nissan", sku: "NI" },

];


$("#filter").keyup(function() {

  var filter = $(this).val();


  items.forEach(function(item, index) {

    var value = item.item // Honda, Nissan

    var sku = item.sku // HO, NI

    if (filter !== '' && new RegExp(filter, "i").test(value)) {

      // Do somethign when matched

      console.info(index, value, sku)

    } else {

      // console.log(index);

      // console.log(value);

    }

  });


});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="live-search" action="" class="styled" method="post">

  <fieldset>

    <input type="text" class="text-input" id="filter" value="" />

    <span id="filter-count"></span>

  </fieldset>

</form>


查看完整回答
反對 回復 2022-08-18
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

你不能像這樣使用jquery,把它改成map


items.map(function (value, index) {


        if (value.item.indexOf(filter) < 0) {

          // Do somethign

        } else {

           console.log(index);

           console.log(value);

        }

    });

var items =[  {item:"Saab", sku:"SA"},

              {item:"Volvo", sku:"VO"},

              {item:"BMW", sku:"BM"},

              {item:"Toyota", sku:"TO"},

              {item:"Honda", sku:"HO"},

              {item:"Nissan", sku:"NI"},

            ];

            

$("#filter").keyup(function () {

    var filter = $(this).val();

    console.log(filter);

    items.map(function (value, index) {

        

        if (value.item.indexOf(filter) < 0) {

          // Do somethign

        } else {

           console.log(index);

           console.log(value.item + "-" + value.sku);

        }

    });


});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="live-search" action="" class="styled" method="post">

  <fieldset>

    <input type="text" class="text-input" id="filter" value="" />

    <span id="filter-count"></span>

  </fieldset>

</form>


查看完整回答
反對 回復 2022-08-18
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

好吧,問題包括對數組屬性的錯誤訪問:


items['item']解析為undefined


實際上,該屬性屬于數組中包含的對象,而不是數組本身。itemitems


您必須循環訪問集合(帶或不帶jQuery),并在訪問后在每個項目上使用該屬性:


$("#filter").keyup(function () {

    var filter = $(this).val();



    $(items).each(function (index, value) {

      console.log('value:',value)

        if (value.item.search(new RegExp(filter, "i")) < 0) {

          //do something

        } else {

           console.log(index);

           console.log(value);

        }

    });

});   

如果您不想使用 jQuery 循環訪問集合:


$("#filter").keyup(function () {

    var filter = $(this).val();



    if(items.find(item => item.item === filter)) {

      console.log('found');

    } else {

      console.log('not found')

    }

});   


查看完整回答
反對 回復 2022-08-18
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

這里的問題是由于使用jQuery選擇器選擇數組項引起的,數組項不適用于數組或對象,它僅適用于DOM元素選擇,以下是如何使用jQuery執行此操作:


var items = [

  { item: "Saab", sku: "SA" },

  { item: "Volvo", sku: "VO" },

  { item: "BMW", sku: "BM" },

  { item: "Toyota", sku: "TO" },

  { item: "Honda", sku: "HO" },

  { item: "Nissan", sku: "NI" },

];


$("#filter").keyup(function () {

  var filter = $(this).val();

  $.each(items, function (index, value) {

    $.each(Object.keys(value), function (idx, val) {

      if (val.search(new RegExp(filter, "i")) < 0) {

          // Do somethign

      } else {

       console.log(index, idx);

       console.log(value, val);

      }

    });

  });

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="live-search" action="" class="styled" method="post">

  <fieldset>

    <input type="text" class="text-input" id="filter" value="" />

    <span id="filter-count"></span>

  </fieldset>

</form>


查看完整回答
反對 回復 2022-08-18
  • 4 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號