Javascript 将和数组转换为对象

Javascript 将和数组转换为对象,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有一个包含iPhone型号的元素数组,后面有4个值,如下所示: const arr = ['ip6s+', '35', '15', '10', '10', 'ip7', '40', '20', '15', '15'] const Obj = { 'ip6s+': ['35', '15', '10', '10'], 'ip7+' : ['90', '60', '35', '30'] } 我想把它变成这样的对象: const arr = ['ip6s+', '35', '15'

我有一个包含iPhone型号的元素数组,后面有4个值,如下所示:

const arr = ['ip6s+', '35', '15',  '10', '10', 'ip7', '40', '20', '15', '15']
const Obj = {
   'ip6s+': ['35', '15',  '10', '10'],
   'ip7+' : ['90', '60', '35', '30']
}
我想把它变成这样的对象:

const arr = ['ip6s+', '35', '15',  '10', '10', 'ip7', '40', '20', '15', '15']
const Obj = {
   'ip6s+': ['35', '15',  '10', '10'],
   'ip7+' : ['90', '60', '35', '30']
}
其中第一个对象是手机模型,每四个对象是其值。如何做到这一点?

您可以使用slice:

常数arr=['ip6s+'、'35'、'15'、'10'、'10'、'ip7'、'40'、'20'、'15'、'15']; 常量obj={}; 常数n=4;//模型名称后的值数 对于var i=0;i 使用slice方法,无论数组中有多少个元素,下面的示例也应该有效:

如果在“ip6s+”之前有元素,但“ip6s+”必须始终在“ip7”之前,则此项也应适用

常量arr=['some','elemnts','in','front','ip6s+','35','15','abc','80','58','10','10','ip7','40','20','15','15','100','xyz'], l=阵列长度, ip6sIndex=arr.indexOf'ip6s+', ip7Index=arr.indexOf'ip7', obj={}; obj[arr[ip6sIndex]=arr.sliceip6sIndex+1,ip7索引;/**获取“ip6s+”之后的项目**/ obj[arr[ip7Index]]=arr.slice-l-ip7Index+1;/**获取“ip7”之后的项目**/
console.logobj 如果您的键总是假定为isNaN,并且第一个值总是对应于键,那么您可以执行类似的操作,如果两个键之间的元素数量是动态的,那么这将更加动态

常数arr=['ip6s+'、'35'、'15'、'10'、'10'、'ip7'、'40'、'20'、'15'、'15'] 让getDesiredFormat=arr=>{ 设currentKey=arr[0] 设final=arr.reduceop,inp=>{ 如果是Naninp{ op[inp]=[] currentKey=inp }否则{ op[currentKey].pushinp } 返回操作 }, {} 返回决赛 }
console.loggetDesiredFormatarr如果数组以以ip开头的项开始,并且以该项开始是对象中新键的触发器,则可以使用

这允许ip之后的项目数量可变

常数arr=['ip6s+'、'35'、'15'、'10'、'10'、'ip7'、'40'、'20'、'15']; 常量obj={}; 设currKey=arr.0,1; arr.forEachs=>s.startsWithip?currKey=s,obj[s]=[]:obj[currKey].push;
console.logobj;但是如果数组有更多的值怎么办?我的印象是数组将始终具有指定的格式[model1,v1,v2,v3,v4,…],因为OP没有提到任何更多的信息。但是提供更多的功能验证答案将为任何想知道如何从数组中获取某些项的人提供更好的帮助。例如。@你是对的,但我认为这是一个非常具体的例子,一个特殊的,而不是一般的情况,我能看到的唯一概括可能是模型名称后的值数量的变化,在这种情况下,只需修改循环计数器的增量和切片参数。@MrGeek我同意,这是一个非常具体的例子。对我来说,这个问题看起来像一个家庭作业问题,所以答案应该有一些模式。