首页 > 解决方案 > 如何使用 javascript 将过滤器应用于嵌套数组中的所有对象

问题描述

我有三个单选按钮,希望根据选项值显示,应该应用于嵌套数组中的每个对象。

// how to do the in nested object array for all `ids` and apply `options` 

code:

const id = "trans";
const options = option_values.find(({id:x}) => x===id).options;

[...document.getElementsByClassName("form-check-input")].filter(({
  value
}) => !options.includes(value)).forEach(elem => elem.style.display = 'none');

var option_value2 = [
{
  id:"trans",
  options: ["bank", "credit"]
},
{
  id:"fund",
  options: ["bank"]
}
]

<form>
  <input class="form-check-input" name="sending-${provider.id}" type="radio" id="provider-send-bank transfer-${provider.id}" value="bank" title="bank" checked>
  <input class="form-check-input" name="sending-${provider.id}" type="radio" id="provider-send-credit-${provider.id}" value="credit" title="credit">
  <input class="form-check-input" name="sending-${provider.id}" type="radio" id="provider-send-debit-${provider.id}" value="debit" title="debit">
</form>

标签: javascriptarraysobject

解决方案


  1. 您没有调用数组option_values来调用find它的方法。它应该是option_value2

     const options = option_values.find(({id:x}) => x===id).options;
    
  2. find调用该方法后,您正在向数组提供数据。应该反过来。

     var option_value2 = [
     {
       id:"trans",
       options: ["bank", "credit"]
     },
     {
       id:"fund",
       options: ["bank"]
     }
     ]
    
     const options = option_values.find(({id:x}) => x===id).options;
    

推荐阅读