Hi我有一个9元素的数组-CCD_ 1。我有一个符合条件的变量。
data==='test' ?
data1 = array.slice(0,3) :
data==='test1' ?
data1 = array.slice(3,6) :
data==='test2' ?
data1 = array.slice(6,9) :
data1 = data;
如果数据与测试匹配,那么data1应该是['a','b','c']
。如果数据与test1匹配,那么data1应该是['d','e','f']
。如果数据与test1匹配,那么data1应该是['g','h','i']
。
如果数据等同于测试,但在test1&test2.在test1&测试2.
有什么办法做到这一点吗?
是否可以使用switch
语句?//为了更好的易读性
const array = ['a','b','c','d','e','f','g','h','i']
const data = 'test1';
let data1;
switch (data) {
case 'test':
data1 = array.slice(0,3);
break;
case 'test1':
data1 = array.slice(3,6);
break;
case 'test2':
data1 = array.slice(6,9);
break;
default:
data1 = data;
break;
}
我会使用test
字符串后面的数字作为乘数来获得所需的部分;
const data = ['a','b','c','d','e','f','g','h','i'];
console.log(getDataPart('test'));
console.log(getDataPart('test1'));
console.log(getDataPart('test2'));
function getDataPart(str) {
// Get number behind 'test', fallback to '0'
const n = (str.length <= 4) ? 0 : str.substring(4);
// Return desired part
return data.slice((n*3), (n*3) + 3)
}
您可以将位置存储在对象内部,并使用数据值获取位置:
const data = "test1";
const array = ['a','b','c','d','e','f','g','h','i']
const pos = {
"test": [0,3],
"test1": [3,6],
"test2": [6,9]
}
const data1 = array.slice(...pos[data]);
console.log(data1);
const array = ['a','b','c','d','e','f','g','h','i']
const data = 'test2';
const data1 = data==='test' ? array.slice(0,3) : (data==='test1' ? array.slice(3,6) :
(data==='test2' ? array.slice(6,9) : data));
console.log(data1);