Javascript 将对象的前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

我试图返回一个对象的前n个属性,我不在乎它们“应该”的顺序(数字、字母等)。我目前将这些n个属性作为一个数组返回,但不得不顺风管理这个数组越来越烦人

输入数据集示例:

{
      "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属性”