有个字典,键值对是3的倍数,3N对键值对,例如下
var dic={
brand_1=11,
name_1=11,
model_1=11,
brand_2=22,
name_2=22,
model_2=22,
brand_3=33,
name_3=33,
model_3=33
}
要转换成
var diclist=[
{ brand:11,name:11,model:11},
{ brand:22,name:22,model:22},
{ brand:33,name:33,model:33},
]
当然,每一组的{ brand:xx,name:xx,model:xx}, 要跟原来字典中key的最后那个数字对起来
有啥好的思路不?
如果对你有帮助的话,希望能够采纳支持一下!!!
<script>
var dic = {
brand_1: 11,
name_1: 11,
model_1: 11,
brand_2: 22,
name_2: 22,
model_2: 22,
brand_3: 33,
name_3: 33,
model_3: 33
};
//转换函数
function func(dic) {
let res = [];
//计算字典长度
let size = Object.keys(dic).length;
//初始化元素个数,如果字典长度为3N,那么初始化元素个数为N
for (let i = 0; i < size / 3; i++) {
res.push({});
}
//初始化元素索引值
let i = 0;
//累加指针
let j = 0;
//遍历字典
for (let key in dic) {
//获取字典的key值
let k = key.substr(0, key.indexOf("_"));
//赋值操作
res[i][k] = dic[key];
//累加+1
j++;
//每循环到3的倍数的时候,索引值自增1
if (j % 3 == 0) i++;
}
//返回结果
return res;
}
//打印输出结果
console.log(func(dic))
</script>
运行结果:
如果对你有帮助的话,希望能够采纳支持一下!!!
var dic = {
brand_1 : 11, name_1 : 11, model_1 : 11,
brand_2 : 22, name_2 : 22, model_2 : 22,
brand_3 : 33, name_3 : 33, model_3 : 33
};
var result = [];
//键值对是3的倍数,3N对键值对,所以可以先确定列表新增的字典个数
let length = Object.keys(dic).length;
for(let i = 0 ;i< length/3; ++i){
result.push({});
}
for (var key in dic){
//let i = key.charAt(key.length-1)-1; //原来只考虑个位数字
let i = parseInt(key.substr(key.indexOf("_")+1))//这个截取多位数字
let k = key.substr(0,key.indexOf("_"))// 提取key的前部分
result[i-1][k] = dic[key];//i-1:是因为保存的元素是从下标0开始
}
console.log(result)
var dic = {
brand_1 : 11, name_1 : 11, model_1 : 11,
brand_2 : 22, name_2 : 22, model_2 : 22,
brand_3 : 33, name_3 : 33, model_3 : 33
};
for (var key in dic){
console.log(typeof key);
}
抱歉,这个是想在我自己上面回答下证明可以用substr的原因,可惜评论错位置了
var dic = {
brand_1 : 11, name_1 : 11, model_1 : 11,
brand_2 : 22, name_2 : 22, model_2 : 22,
brand_3 : 33, name_3 : 33, model_3 : 33
};
for (var key in dic){
console.log(typeof key);
}
var dic = {
brand_1 : 11, name_1 : 11, model_1 : 11,
brand_2 : 22, name_2 : 22, model_2 : 22,
brand_3 : 33, name_3 : 33, model_3 : 33
};
for (var key in dic){
console.log(typeof key);
}