gpt4 book ai didi

javascript - 如何使用 Javascript 将数组的值转换为每个条目中的不同键?

转载 作者:行者123 更新时间:2023-12-03 12:02:41 24 4
gpt4 key购买 nike

我有以下数据集。数组中的每个条目都有一个名为“Type”的键,共有三种类型。

var data = [
{date: "12/27/2012", Type: "http_200", Val: 190, Irrelevant: "Stringa"},
{date: "12/28/2012", Type: "http_200", Val: 10, Irrelevant: "Stringb"},
{date: "12/29/2012", Type: "http_404", Val: 100, Irrelevant: "Stringc"},
{date: "12/30/2012", Type: "http_302", Val: 90, Irrelevant: "Stringd"},
];

我希望每种类型都成为自己的键,其值与“Val”的值相同

Result = [
{date: "12/27/2012",Type: "http_200", Val: 190, http_404: 0, http_200: 190, http_302: 0},
{date: "12/28/2012",Type: "http_200", Val: 10, http_404: 0, http_200: 10, http_302: 0},
{date: "12/29/2012",Type: "http_404",Val: 100, http_404: 100, http_200: 0, http_302: 0},
{date: "12/30/2012",Type: "http_302",Val: 90, http_404: 0, http_200: 0, http_302: 90},
];

最有效的方法是什么?我将在一个非常大的数据集上执行此操作。

此外,是否可以在不知道所有类型的情况下执行此操作,以便我可以轻松地在任何给定的键上运行它。

我可以尝试如下操作,但问题是考虑到数据量和类型,对每个键和值执行此操作非常乏味

data.forEach(function (d) {
if(d.Type = 'http_200'){d.http_200=d.Val, d.http_404=0, http_302=0} else {d.http_200=d.0, d.http_404=0, http_302=0};
if(d.Type = 'http_404'){d.http_200=0, d.http_404=d.Val, http_302=0} else {d.http_200=d.0, d.http_404=0, http_302=0};
if(d.Type = 'http_302'){d.http_200=0, d.http_404=0, http_302=d.Val} else {d.http_200=d.0, d.http_404=0, http_302=0};
});

最佳答案

您需要循环遍历数组两次。首先提取所有类型,然后创建值。

var data = [
{date: "12/27/2012", Type: "http_200", Val: 190, Irrelevant: "Stringa"},
{date: "12/28/2012", Type: "http_200", Val: 10, Irrelevant: "Stringb"},
{date: "12/29/2012", Type: "http_404", Val: 100, Irrelevant: "Stringc"},
{date: "12/30/2012", Type: "http_302", Val: 90, Irrelevant: "Stringd"},
];
var types = [];

function getTypes(data){
for (var i = 0, endi = data.length; i<endi; ++i){
var obj = data[i]
if(types.indexOf(obj.Type)) types.push(obj.Type);
}
}

function addAllTypesToData(data, types){
for (var data_i = 0, data_endi = data.length; data_i<data_endi; ++data_i){
var obj = data[data_i];
for (var type_i = 0, type_endi = types.length; type_i<type_endi; ++type_i){
obj[types[type_i]] = (obj.Type === types[type_i]) ? obj.Val : 0;
}
}
}

getTypes(data);
addAllTypesToData(data, types);

关于javascript - 如何使用 Javascript 将数组的值转换为每个条目中的不同键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25342616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com