Javascript 如何使下面的函数返回true或false?

Javascript 如何使下面的函数返回true或false?,javascript,function,Javascript,Function,以下函数检查某些对象是否具有属性缩略图。如果对象有缩略图,我希望它返回true,如果对象没有缩略图,则返回false: function hasThumbnail (key, object) { Object.keys(object).forEach(key => { const value = object[key] if (value.constructor === Array) { value.forEach(obj => { i

以下函数检查某些对象是否具有属性
缩略图
。如果对象有缩略图,我希望它返回
true
,如果对象没有缩略图,则返回
false

function hasThumbnail (key, object) {
  Object.keys(object).forEach(key => {
    const value = object[key]
    if (value.constructor === Array) {
      value.forEach(obj => {
        if (obj.thumbnail) {
          return true
        } else {
          return false
        }
      })
    }
  })

但是,现在函数不返回任何内容。如何使函数return
true
false

您有一个
forEach
,但是
return
在循环中刚好结束循环,因此您需要这样做:

function hasThumbnail (key, object)
{
    var ret = false;
    Object.keys(object).forEach(key => {
        const value = object[key]
        if (value.constructor === Array) {
            value.forEach(obj => {
                if (obj.thumbnail) {
                    ret = true;
                    return;
                } else {
                    ret = false;
                    return;
                }
            })
        }
    });
    return ret;
}

这段代码没有经过测试,我更喜欢jQuery,但是返回的概念不在循环中工作应该与vanilla JS相同。

您有一个
forEach
,但是
返回
在循环中只是结束了循环,所以您需要这样做:

function hasThumbnail (key, object)
{
    var ret = false;
    Object.keys(object).forEach(key => {
        const value = object[key]
        if (value.constructor === Array) {
            value.forEach(obj => {
                if (obj.thumbnail) {
                    ret = true;
                    return;
                } else {
                    ret = false;
                    return;
                }
            })
        }
    });
    return ret;
}
这段代码未经测试,我更喜欢jQuery,但返回不在循环中工作的概念应该与vanilla JS相同。

如果发现,您可以使用inside从迭代中获得
true
false

function hasThumbnail (key, object) {
    return Object.keys(object).some(key => {
        const value = object[key]
        if (value.constructor === Array) {
            return value.some(obj => {
                return obj.thumbnail;
            });
        }
    });
}
如果找到,您可以使用inside从迭代中获取
true
false

function hasThumbnail (key, object) {
    return Object.keys(object).some(key => {
        const value = object[key]
        if (value.constructor === Array) {
            return value.some(obj => {
                return obj.thumbnail;
            });
        }
    });
}

这里有一种不那么冗长的方式:

function hasThumbnail(object) {
    return Object.values(object).some(prop =>
       Array.isArray(prop) && prop.some(x => x.thumbnail));
}

可以很容易地进行多填充。

这里有一种不太详细的方法:

function hasThumbnail(object) {
    return Object.values(object).some(prop =>
       Array.isArray(prop) && prop.some(x => x.thumbnail));
}
可以很容易地填充