Javascript 从对象ES6创建键值数组
我有这个东西Javascript 从对象ES6创建键值数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有这个东西 var obj = { 'names-1-1': 0, 'names-1-2': 0.94, 'names-1-3': 0, 'names-2-1': 0.95, 'names-2-2': 0.96, 'names-2-3': 0.2, 'names-3-1': 0.96, 'names-3-2': 99999, 'names-3-3': 2.4 }; 但我需要一个数组(键、值)如下: 0 :{ names-1-1 : 0
var obj = {
'names-1-1': 0,
'names-1-2': 0.94,
'names-1-3': 0,
'names-2-1': 0.95,
'names-2-2': 0.96,
'names-2-3': 0.2,
'names-3-1': 0.96,
'names-3-2': 99999,
'names-3-3': 2.4
};
但我需要一个数组(键、值)如下:
0 :{
names-1-1 : 0
names-1-2 : 0.94
names-1-3 : 0
}
1 :{
names-2-1 : 0.95
names-2-2 : 0.96
names-2-3 : 0.2
}
2 :{
names-3-1 : 0.96
names-3-2 : 99999
names-3-3 : 2.4
}
其中names-{index}-1
index是一个变量。
如何使用React&javascript ES6实现这一点?自ECMA 5.1以来就一直存在
const obj = {
test: 'some test',
test2: 'another test'
};
const keys = Object.keys(obj); // ['test', 'test2']
或在ECMA 2017中增加了哪些
const obj = {
test: 'some test',
test2: 'another test'
};
const entries = Object.entries(obj);
// [['test', 'some test], ['test2', 'another test']]
自ECMA 5.1以来一直存在
const obj = {
test: 'some test',
test2: 'another test'
};
const keys = Object.keys(obj); // ['test', 'test2']
或在ECMA 2017中增加了哪些
const obj = {
test: 'some test',
test2: 'another test'
};
const entries = Object.entries(obj);
// [['test', 'some test], ['test2', 'another test']]
您可以这样做:
myObject = {
"names-1-1": .5,
"names-1-2": .3,
"names-2-1": .1,
"names-2-2": .6
}
var out = [];
for (var i in myObject) {
var index = i.substr(6,1);
out[index-1] = out[index-1] || {};
out[index-1][i] = myObject[i];
}
console.log(out);
//[{"names-1-1":0.5,"names-1-2":0.3},{"names-2-1":0.1,"names-2-2":0.6}]
您可以这样做:
myObject = {
"names-1-1": .5,
"names-1-2": .3,
"names-2-1": .1,
"names-2-2": .6
}
var out = [];
for (var i in myObject) {
var index = i.substr(6,1);
out[index-1] = out[index-1] || {};
out[index-1][i] = myObject[i];
}
console.log(out);
//[{"names-1-1":0.5,"names-1-2":0.3},{"names-2-1":0.1,"names-2-2":0.6}]
可以使用方法生成数组
var obj={'names-1-1':0,'names-1-2':0.94,'names-1-3':0,'names-2-1':0.95,'names-2-2':0.96,'names-3-1':0.96,'names-3-2':99999,'names-3-3':2.4};
var res=Object.keys(obj)//获取所有键
//迭代以生成结果数组
.减少(功能(arr,k){
//使用正则表达式从属性名获取索引
//或者使用k.split('-')[1]
var i=k.match(/names-(\d+)/)[1];
//如果未定义索引,请定义索引
arr[i-1]=arr[i-1]|{};
//在对象中设置属性
arr[i-1][k]=obj[k];
//返回数组引用
返回arr;
//将初始值设置为空数组
}, []);
控制台日志(res)代码>您可以使用方法生成数组
var obj={'names-1-1':0,'names-1-2':0.94,'names-1-3':0,'names-2-1':0.95,'names-2-2':0.96,'names-3-1':0.96,'names-3-2':99999,'names-3-3':2.4};
var res=Object.keys(obj)//获取所有键
//迭代以生成结果数组
.减少(功能(arr,k){
//使用正则表达式从属性名获取索引
//或者使用k.split('-')[1]
var i=k.match(/names-(\d+)/)[1];
//如果未定义索引,请定义索引
arr[i-1]=arr[i-1]|{};
//在对象中设置属性
arr[i-1][k]=obj[k];
//返回数组引用
返回arr;
//将初始值设置为空数组
}, []);
控制台日志(res)代码>将实际对象也粘贴到此处,而不是图像0:{names-1-1:0 names-1-2:0.94 names-1-3:0}(粗体)。1和2也是如此。创建键粘贴实际对象而不是图像的逻辑是什么0:{names-1-1:0 names-1-2:0.94 names-1-3:0}(粗体)。1和2也是如此。创建密钥的逻辑是什么