【发布时间】:2018-12-15 17:53:22
【问题描述】:
假设我有一个现有的 Items 数组:
const existingItems = [
{
"path": "xxx.yyy.zzz"
},
{
"path": "yyy.xxx.zzz"
}
];
用户将向该数组添加一个新元素 - 例如:
const newItem = {
"path": "yyy.xxx"
};
如何验证 newItem.path 不会匹配任何绝对路径?
我尝试了几种方法,但每次都使用不同的 if 语句,这使得它的代码非常脏。有什么神奇的功能可以实现以下场景?
例如:
场景 1: 当新路径是现有路径的一部分时
let current = 'yyy.xxx.zzz'; // current existing Item
let newPath = 'yyy.xxx'; //new
// 无效 => 期望为假
场景 2: 当新路径包含在现有路径的一部分中时
let current = 'yyy.xxx.zzz'; // current existing Item
let newPath = 'yyy.xxx.z'; //new
// VALID => 期望为真
场景 3: 当新路径包含现有路径时
let current = 'yyy.xxx.zzz'; // current existing Item
let newPath = 'yyy.xxx.zzz.ggg '; //new
// 无效 => 期望为假
场景 4: 当新路径包含在现有路径的一部分中时
let current = 'yyy.xxx.zzz'; // current existing Item
let newPath = 'yy'; //new
// VALID => 期望为真
场景 5: 当多次包含新路径时
let current = 'yyy.xxx.zzz'; // current existing Item
let newPath = 'xxx.yyy.xxx.zzz'; //new
// VALID => 期望为真
场景 6: 当新路径有一个点时
let current = 'yyy.xxx.zzz'; // current existing Item
let newPath = 'yyy.'; //new
// 无效 => 期望为假
【问题讨论】:
标签: javascript validation