【问题标题】:Populating Nested Arrays with Key value pairs使用键值对填充嵌套数组
【发布时间】:2021-01-14 11:51:01
【问题描述】:

我有一个嵌套数组结构,如下所示。让我们称之为 arr:

最里面的数组有一个键值对。但可以看出,这些值仅来自 3-7。我需要在键列中用值 0-9 填充这个最里面的数组,如果键不存在,则将它们填充为 0。我尝试使用值 [0,9] 创建一个单独的数组(目标)来检查,但没有成功。我试图做这样的事情,但我得到一个错误:

        var target = [0,1,2,3,4,5,6,7,8,9];
    
        for(let i =0; i < target.length; i++){
            for(let j =0; j < arr.length; j++){
                for(let k =0; k < arr[j].values.length; k++){
                        if (miss_rate_arr[i] in rating_count[j].values[k].key === false){
                         rating_count[j].values.push({key:miss_rate_arr[i], value:0});
                     }
                }
            }
        }
        console.log(rating_count);

这不仅是检查那个 0 位置的特定值,而且我理解这个问题。我只是不知道如何解决它。我期望最终结果如下所示。提前谢谢你

【问题讨论】:

  • 这个数组是从哪里来的?您是否在自己代码的另一部分中创建它?如果是这样,您应该以您想要开始的形状创建它。
  • 我实际上最终操纵了数组。它使工作变得更容易

标签: javascript arrays d3.js search


【解决方案1】:

我不确定你的目的是什么, 如果您要采用更通用的方法并希望保留目标数组, 这更像您发布的内容,之后您需要对其进行排序以按照您发布的顺序获取数组..

let target = [0,1,2,3,4,5,6,7,8,9];
for(let i = 0; i < target.length; i++){
    if (arr.filter(x => x.key == target[i]).length == 0){
        arr.push({key:target[i], value:0});
    }
}
arr.sort((a,b) => a.key - b.key);

但如果 target 始终为 0-9,您可以跳过目标数组并从 0 循环到您要瞄准的最大键。 这样,值的测试就更简单了(你可以只检查键是否与索引匹配),并且由于你必须在正确的索引处添加它,所以你保持它的排序..

let maxKey = 9;
for(let i = 0; i <= maxKey; i++){
    if (arr.length > i && arr[i].key != i || arr.length == i){
        arr.splice(i, 0, {key: i, value:0});
    } 
}

【讨论】:

    猜你喜欢
    • 2023-02-06
    • 2014-11-05
    • 2018-06-07
    • 1970-01-01
    • 2017-01-01
    • 2019-09-23
    • 2017-10-03
    • 2015-03-26
    相关资源
    最近更新 更多