我正在尝试使用map以某种方式填充我的数据。
我想要的('值'是一个对象数组):
[{name:"testmodel",values[{val1:"val1",...,val5:"val5"}]},
{name:"testmodel2",values[{val1:"val1",...,val5:"val5"}]},
...
{name:"testmodelN",values[{val1:"val1",...,val5:"val5"}]}
]
我得到了什么('值'是数组中的对象数组):
[{name:"testmodel",values[[{val1:"val1",...,val5:"val5"}]]},
{name:"testmodel2",values[[{val1:"val1",...,val5:"val5"}]]},
...
{name:"testmodelN",values[[{val1:"val1",...,val5:"val5"}]]}
]
这是我的数据
data_p = [
[ {"key":"Device_Model","value":"test_model"},
{"key":">20MB/30","value":"11"},
{"key":">200MB/30","value":"33"},
{"key":">2048MB/30","value":"10"},
{"key":">5120MB/30","value":"55"},
{"key":">10240MB/30","value":"10"}
],
[{"key":"Device_Model","value":"0P6B670"},{"key":">20MB/30","value":"9"},{"key":">200MB/30","value":"8"},{"key":">2048MB/30","value":"2"},{"key":">5120MB/30","value":"23"},{"key":">10240MB/30","value":"23"}],
[{"key":"Device_Model","value":"0P6B680"},{"key":">20MB/30","value":"1"},{"key":">200MB/30","value":"23"},{"key":">2048MB/30","value":"23"},{"key":">5120MB/30","value":"23"},{"key":">10240MB/30","value":"23"}],
[{"key":"Device_Model","value":"0P6B810"},{"key":">20MB/30","value":"5"},{"key":">200MB/30","value":"4"},{"key":">2048MB/30","value":"1"},{"key":">5120MB/30","value":"1"},{"key":">10240MB/30","value":"1"}],
[{"key":"Device_Model","value":"0P6B900"},{"key":">20MB/30","value":"4"},{"key":">200MB/30","value":"4"},{"key":">2048MB/30","value":"1"},{"key":">5120MB/30","value":"23"},{"key":">10240MB/30","value":"23"}]]
这是我的地图功能:
var bar = color.domain().map(function(name){
return {
name: name,
values: data_p.map(function(d){
a=[]
a.push(d[1])
a.push(d[2])
a.push(d[3])
a.push(d[4])
a.push(d[5])
return a;
})
}
})
以上内容无法正常工作,因为此处没有color
库,但这应该可以为您提供所需内容
data_p.map(function(d){
a=[]
a.push(d[1])
a.push(d[2])
a.push(d[3])
a.push(d[4])
a.push(d[5])
return a;
})
这就是我得到的:
bar
[Object { name="test_model", values=[5]}, Object { name="0P6B670", values=[5]}, Object { name="0P6B680", values=[5]}, Object { name="0P6B810", values=[5]}, Object { name="0P6B900", values=[5]}]
bar[0]["values"]
[[Object { key=">20MB/30", value="11"}, Object { key=">200MB/30", value="33"}, Object { key=">2048MB/30", value="10"}, Object { key=">5120MB/30", value="55"}, Object { key=">10240MB/30", value="10"}]],...
bar[0]["values"][0]
[Object { key=">20MB/30", value="11"}, Object { key=">200MB/30", value="33"}, Object { key=">2048MB/30", value="10"}, Object { key=">5120MB/30", value="55"}, Object { key=">10240MB/30", value="10"}]
上面我非常接近,但是在bar[0]["values"]
侧面我在values数组中有一个对象数组。我想要的是values
是一个对象数组。
这就是我想要的:(注意这个values
是一个对象数组)
bar[0]["values"]
[Object { key=">20MB/30", value="11"}, Object { key=">200MB/30", value="33"}, Object { key=">2048MB/30", value="10"}, Object { key=">5120MB/30", value="55"}, Object { key=">10240MB/30", value="10"}]
这就是我想要的
[{name:"testmodel",values[{ key=">20MB/30", value="11"}, { key=">200MB/30", value="33"}, { key=">2048MB/30", value="10"}, { key=">5120MB/30", value="55"}, { key=">10240MB/30", value="10"}]},
{name:"testmodel2",values[{ key=">20MB/30", value="11"}, { key=">200MB/30", value="33"}, { key=">2048MB/30", value="10"}, { key=">5120MB/30", value="55"}, { key=">10240MB/30", value="10"}]},
...
{name:"testmodelN",values[[{val1:"val1",...,val5:"val5"}]]}
]
当我使用你说的我得到这个时,每个名字的25个键/值。我想每个名字需要5个键/值。
[{name:"testmodel",values[{val1:"val1",...,val25:"val25"}]},
{name:"testmodel2",values[{val1:"val1",...,val25:"val25"}]},
...
{name:"testmodelN",values[{val1:"val1",...,val25:"val25"}]}
]
到@trincot下面的答案,打破了这个仅供我参考。 在控制台中进行了以下操作。
//1
aa=data_p.filter(function(d){
return d[0].value == "test_model";
})
aa
//2
aa=data_p.filter(function(d){
return d[0].value == "test_model";
})[0]
aa
//3
aa=data_p.filter(function(d){
return d[0].value == "test_model";
})[0].slice(1)
aa
答案 0 :(得分:1)
您需要按外部回调函数中传递的名称过滤数据。您可以使用filter
(或使用find
的现代浏览器)。在过滤的项目上,您可以使用slice
获取元素,以便排除包含名称的第一个元素:
var bar = color.domain().map(function(name){
return {
name: name,
values: data_p.filter(function(d){
return d[0].value == name;
})[0].slice(1)
}
})