Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取数组的前3个元素,然后是另一个3元素,然后是javascript中的另一个3元素_Javascript - Fatal编程技术网

获取数组的前3个元素,然后是另一个3元素,然后是javascript中的另一个3元素

获取数组的前3个元素,然后是另一个3元素,然后是javascript中的另一个3元素,javascript,Javascript,嗨,我有一个9元素的数组- array=['a','b','c','d','e','f','g','h','i']。 我有一个与条件匹配的变量 data==='test' ? data1 = array.slice(0,3) : data==='test1' ? data1 = array.slice(3,6) : data==='test2' ? data1 = array.slice(6,9) :

嗨,我有一个9元素的数组-
array=['a','b','c','d','e','f','g','h','i']
。 我有一个与条件匹配的变量

data==='test' ?
        data1 = array.slice(0,3) : 
        data==='test1' ?
        data1 = array.slice(3,6) : 
        data==='test2' ?
        data1 = array.slice(6,9) :
        data1 = data;
如果数据与测试匹配,那么数据1应该是
['a'、'b'、'c']
。 如果数据与test1匹配,那么data1应该是
['d','e','f']
。 如果数据与test1匹配,那么data1应该是
['g','h','i']

如果数据相当于test,但在test1和test2中没有得到正确的数据,那么我就正确地得到了data1。在test1和test2中都没有


有没有办法做到这一点?

可以使用
开关
语句?//为了更好的易读性

常量数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'] 常量数据='test1'; 让数据1; 交换机(数据){ 案例“测试”: data1=array.slice(0,3); 打破 案例“test1”: data1=array.slice(3,6); 打破 案例“测试2”: data1=array.slice(6,9); 打破 违约: 数据1=数据; 打破 }
我会使用
测试
字符串后面的数字作为乘法器,以获得所需的部分

const data=['a','b','c','d','e','f','g','h','i'];
log(getDataPart('test');
log(getDataPart('test1');
log(getDataPart('test2');
函数getDataPart(str){
//获取“测试”后面的数字,回退到“0”
常数n=(str.length
常量数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i']
常量数据='test2';
常量data1=data=='test'?数组.slice(0,3):(data=='test1'?数组.slice(3,6):
(data=='test2'?array.slice(6,9):data));

console.log(data1);
您可以在对象中存储位置,并使用数据值获取位置:

const data=“test1”;
常量数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i']
常数位置={
“测试”:[0,3],
“测试1”:[3,6],
“测试2”:[6,9]
}
const data1=array.slice(…pos[data]);

console.log(data1);
您只分配一次数据,因此它的值不会改变,您可以将其转换为函数,每次都有不同的返回值,或者为数组创建一个自定义getter,它显示您的代码已经工作了……当
数据==='test
时,
data1
设置为
['a','b','c']
,当
数据===“test1
”时,则
数据1
设置为
['d'、'e'、'f']
,等等。问题是询问数组元素的动态引用,而实际上不多次调用三元运算符