使用map返回非数组

时间:2017-05-14 15:11:06

标签: javascript arrays ecmascript-6

我使用map循环但它返回了一个数组,不确定我应该使用像forEach这样的东西。我有这个初始对象。

data.discounts: [{
    days: 3,
    is_enable: true
},{
    days: 10,
    is_enable: false
}]

然后我检查is_enable

const newObj = {
    "disableDiscount_3": !isEmpty(data.discounts) ? (data.discounts.map(obj => obj.days === 3 && obj.is_enable === true ? true : false)) : ''
}
然后它变成了

newObj.disableDiscount_3 = [{
    true,
    false,
    false,
    false
}]

我想要的实际上只是真或假:newObj.disableDiscount_3 = true我该怎么办?

1 个答案:

答案 0 :(得分:2)

map()方法并不适用于此,而是可以使用some()检查指定的对象是否存在并返回true/false



var discounts = [{
  days: 3,
  is_enable: true
}, {
  days: 10,
  is_enable: false
}]

var check = discounts.some(e => e.days == 3 && e.is_enable === true);
console.log(check)




要首先找到特定对象,您可以使用find()方法,如果找到该对象,则可以使用某些属性。



var data = {
  discounts: [{
    days: 3,
    is_enable: true,
    value: 123
  }, {
    days: 10,
    is_enable: false
  }]
}

var obj = {
  "discount_3": (function() {
    var check = data.discounts.find(e => e.days == 3 && e.is_enable === true)
    return check ? check.value : ''
  })()
}

console.log(obj)