Javascript 将对象的前n个属性缩减/解构为新对象
我试图返回一个对象的前n个属性,我不在乎它们“应该”的顺序(数字、字母等)。我目前将这些n个属性作为一个数组返回,但不得不顺风管理这个数组越来越烦人 输入数据集示例:Javascript 将对象的前n个属性缩减/解构为新对象,javascript,Javascript,我试图返回一个对象的前n个属性,我不在乎它们“应该”的顺序(数字、字母等)。我目前将这些n个属性作为一个数组返回,但不得不顺风管理这个数组越来越烦人 输入数据集示例: { "0.00530016": "0.18990380", "0.00531201": "0.39754144", "0.00531202": "15.93707742", "0.00531454": "7.17396155", "0.00531512": "0.3766
{
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
}
返回前5个将生成一个新对象,如下所示:
{
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027"
}
我当前通过以下代码将这些值返回到数组中的解决方案:
foo.property = Object.entries(dataset).slice(0, depth);
产生以下结果:
[
[
"0.00530016",
"0.18990380"
],
[
"0.00531201",
"0.39754144"
],
[
"0.00531202",
"15.93707742"
],
[
"0.00531454",
"7.17396155"
],
[
"0.00531512",
"0.37666027"
]
]
那么,我如何将已经拥有的数组变异为示例对象,或者如何在没有该数组的情况下首先返回该示例对象?
我已经尝试在现有代码的末尾使用reduce,但我在这里有点经验不足,所以我认为我做了一些错误的事情,因为这需要动态
我试图返回一个对象的前n个属性,我不知道
注意它们“应该”的顺序(数字、字母等)
如果顺序无关紧要(这意味着您将获取任意5个属性),那么请尝试以下操作
var深度=5;
var obj={
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
};
var输出={};
Object.keys(obj).slice(0,depth).forEach(函数(键){output[key]=obj[key]});
log(JSON.stringify(输出,0,4))代码>
我试图返回一个对象的前n个属性,我不知道
注意它们“应该”的顺序(数字、字母等)
如果顺序无关紧要(这意味着您将获取任意5个属性),那么请尝试以下操作
var深度=5;
var obj={
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
};
var输出={};
Object.keys(obj).slice(0,depth).forEach(函数(键){output[key]=obj[key]});
log(JSON.stringify(输出,0,4))代码>Javascript对象没有顺序,但由于您是按排序顺序引用它们,所以可以这样做
让obj={
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
}
让result=Object.keys(obj).排序((a,b)=>a-b).切片(0,5).减少((a,b)=>{
a[b]=obj[b];
返回a;
}, {});
控制台日志(结果)代码>Javascript对象没有顺序,但由于您是按排序顺序引用它们,所以可以这样做
让obj={
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
}
让result=Object.keys(obj).排序((a,b)=>a-b).切片(0,5).减少((a,b)=>{
a[b]=obj[b];
返回a;
}, {});
控制台日志(结果)
这将使用删除对原始数据集进行变异
var数据集={
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
};
函数getNObjects(数据集,深度){
var i=0;
for(数据集中的var键){
如果(i>=深度){
删除数据集[键];
}
i++;
}
返回数据集;
}
log(getNObjects(dataset,5))
这将使用删除对原始数据集进行变异
var数据集={
"0.00530016": "0.18990380",
"0.00531201": "0.39754144",
"0.00531202": "15.93707742",
"0.00531454": "7.17396155",
"0.00531512": "0.37666027",
"0.00533384": "83.98047315",
"0.00535753": "2.74703930",
"0.00535997": "1.13950885",
"0.00536000": "53.12723251",
"0.00537968": "5.27397661",
"0.00539234": "3.63687246"
};
函数getNObjects(数据集,深度){
var i=0;
for(数据集中的var键){
如果(i>=深度){
删除数据集[键];
}
i++;
}
返回数据集;
}
log(getNObjects(dataset,5))代码>只需使用循环复制属性并在n个属性之后中断:
function getSomeProperties(obj, N) {
var res = {};
var i = 0;
for (var p in obj) {
if (i++ >= N) return res;
res[p] = obj[p];
}
return res; // or throw an error that there were less than N properties in obj
}
只需使用循环复制属性并在n个属性之后中断:
function getSomeProperties(obj, N) {
var res = {};
var i = 0;
for (var p in obj) {
if (i++ >= N) return res;
res[p] = obj[p];
}
return res; // or throw an error that there were less than N properties in obj
}
javascript对象没有order@marvel308我知道这是每个人都挂断了,但我不关心它返回的顺序,只是它是第一个N数量。排序顺序中的第一个N?根据keyName排序?@marvel308根据他们当时出现的顺序进行“排序”。顺序实际上并不重要,只是一个新对象中有N个数量。如果有帮助,则此对象是从JSON文件构造的。正如您所看到的,数据集已经排序,并且将始终排序。@tsujp当对象没有顺序时,术语“first”毫无意义。你最好要求“从对象中去掉一些N属性”