【问题标题】:Check for alternating numbers and booleans in arguments检查参数中的交替数字和布尔值
【发布时间】:2017-08-09 06:26:10
【问题描述】:

我希望能够检查特定交替对象类型的参数对象,如下所示:

number, boolean, number, boolean ==> 1, true, 2, false....etc

我试过这个(在我把参数对象变成一个数组之后):

var check = args.some ( function (val, i) {
  var type = typeof(val);
  return i % 2 == 0 ? type === 'number' : type === 'boolean';
});

使用some方法可以吗?

【问题讨论】:

  • 您想检查参数的类型?你的代码让我很困惑
  • 请详细描述您想要实现的目标。
  • @NinaScholz 我认为如果falseevery 继续,some 会停止..
  • 每一站都在第一个false返回值。
  • @NinaScholz 和some 我能够捕获关于第一个虚假陈述在哪里找到的索引,这可以用every 完成吗?

标签: javascript alternate


【解决方案1】:

您可以检查 Array#every 和数组的类型。

every 方法对数组中存在的每个元素执行一次提供的callback 函数,直到找到callback 返回虚假值的元素。如果找到这样的元素,every 方法会立即返回false。否则,如果 callback 返回所有元素的真值,every 返回truecallback 仅对具有赋值的数组索引调用;它不会为已删除或从未被赋值的索引调用。

function isAlternate(v, i) {
    console.log(i, v, ['number', 'boolean'][i % 2], typeof v === ['number', 'boolean'][i % 2]);
    return typeof v === ['number', 'boolean'][i % 2];
}

console.log([1, 2, 3].every(isAlternate));
console.log([1, true, 2, false].every(isAlternate));
console.log([null, null].every(isAlternate));
.as-console-wrapper { max-height: 100% !important; top: 0; }

function check(array) {
    return array.every(function (v, i) {
        if (typeof v === ['number', 'boolean'][i % 2]) {
            return true;
        }
        console.log('wrong item found at', i);
    });
}

console.log(check([1, 2, 3]));
console.log(check([1, true, 2, false]));
console.log(check([null, null]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

使用 ES6,您可以使用 Array#findIndex

function getWrongIndex(array) {
    return array.findIndex((v, i) => typeof v !== ['number', 'boolean'][i % 2]);
}

console.log(getWrongIndex([1, 2, 3]));           //  1
console.log(getWrongIndex([1, true, 2, false])); // -1 no wrong index found
console.log(getWrongIndex([null, null]));        //  0

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2021-04-29
    • 2016-10-05
    相关资源
    最近更新 更多