如何使以下函数返回true或false

How to make the following function return true or false?

本文关键字:true false 返回 函数 何使      更新时间:2023-09-26

以下函数检查某些对象是否具有属性thumbnail。如果对象有缩略图,我希望它返回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
        }
      })
    }
  })

但是,现在函数没有返回任何内容。如何使函数返回truefalse

如果找到,您可以在内部使用Array#some来从迭代中获得truefalse

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;
            });
        }
    });
}

你有一个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,但return不在循环中工作的概念应该与vanillaJS相同。

这里有一个不那么冗长的方法:

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

CCD_ 11可以很容易地进行聚合填充。