SOURCE

console 命令行工具 X clear

                    
>
console
const c = console.info;
function startsWith(str, prefix) {
  return str.lastIndexOf(prefix, 0) === 0; //从后向前找最后一个目标所在下标(从前往后数)
};

// c(startsWith('abc', 'ab')); //0
// c(startsWith('babc', 'a')); //2
// c(startsWith('ababac', 'a')); //4
// c(['.', '['].indexOf('a.c' ['a'.length]));
function getFieldMeta(name) {
  fieldsMeta[name] = fieldsMeta[name] || {};
  return fieldsMeta[name];
}

function getValidFieldsName() {
  return fieldsMeta ? Object.keys(fieldsMeta).filter(name => !this.getFieldMeta(name).hidden) : [];
}

function getAllFieldsName() {
  return fieldsMeta ? Object.keys(fieldsMeta) : [];
}

function getValidFieldsFullName(maybePartialName) {
  const maybePartialNames = Array.isArray(maybePartialName) ? maybePartialName: [maybePartialName];
  return getValidFieldsName()
    .filter(fullName => maybePartialNames.some(partialName => (fullName === partialName || (startsWith(fullName, partialName) && ['.', '['].indexOf(fullName[partialName.length]) >= 0))));
}

const fieldsMeta = {
  'a.c': 1,
  'b[d]': 2
};
c(getValidFieldsFullName(['a','b']));
resetFields:传names,调用,不传调用getAllFieldsName获取所有的域名