检查对象是否为数组内的特定值

时间:2019-07-18 08:28:41

标签: javascript

我需要检查数据的类型是否为acc-item,如果是,则需要为变量true分配值falsehasAccordionLayout

data = [  
           {  
              type:"text",
              text:"This is just text"
           },
           {  
              type:"acc-item",
              text:"This is acc-item"
           },
           {  
              type:"acc-item",
              text:"This is acc-item 2"
           },
           {  
              type:"text",
              text:"This is just text"
           }
        ];

这是我尝试过的方法,但是想以更好的方式做到

this.hasAccordionLayout = (this.data.filter( function(content) {
            if(data.type === 'acc-item') {
              return data;
            }
          })).length > 0? true: false;

4 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.some()

/* Paypal button code */ // Execute the payment onAuthorize: function(data, actions) {$(this).attr('action') return actions.payment.execute().then(function(data) { // Show a confirmation message to the buyer window.user_membership_activation(data); }); } /* Elsewhere in your page or included script */ window.user_membership_activation = function(data) { // do something here } 方法测试数组中的至少一个元素是否通过了由提供的函数实现的测试。它返回一个布尔值。

some()

有关实时演示,请参见this

答案 1 :(得分:0)

已更新,您可以使用some()函数:

data.some(item => item.type === 'acc-item');

答案 2 :(得分:0)

您可以使用Array.prototype.find()

this.hasAccordionLayout = this.data.find( d => d.type === 'acc-item') != undefined

答案 3 :(得分:0)

尝试使用some这样的功能:

data = [ { type:"text", text:"This is just text" }, { type:"acc-item", text:"This is acc-item" }, { type:"acc-item", text:"This is acc-item 2" }, { type:"text", text:"This is just text" } ];
        
const exist = key => data.some(ele=>ele.type === key);
        
console.log(exist('acc-item'));