-1
我正在使用OpenLayers 3並正在製作彈出窗口。我想通過創建子數組來組織從sql視圖獲得的數組。我一直在尋找樹和$ .map函數,但我仍然無法正確組織數據,因爲來自數據庫的父/子關係在視圖中丟失。重組數組javascript
這是數據的一個例子(請注意,這是動態的;所述陣列將與每個請求不同):
var list = [
{samplename: "samp1", chemicalname: "foo1", result: 16, qualifier: "X"},
{samplename: "samp1", chemicalname: "foo", result: 10, qualifier: "X"},
{samplename: "samp1", chemicalname: "foo1", result: 109, qualifier: "X"},
{samplename: "samp1", chemicalname: "foo", result: 418, qualifier: "A"},
{samplename: "samp2", chemicalname: "foo1", result: 411, qualifier: "AU"},
{samplename: "samp2", chemicalname: "foo", result: 4, qualifier: "Z"},
{samplename: "samp2", chemicalname: "foo1", result: 1, qualifier: "XY"},
{samplename: "samp3", chemicalname: "foo1", result: 100, qualifier: "X"},
{samplename: "samp3", chemicalname: "foo", result: 140, qualifier: "AX"}
{samplename: "samp4", chemicalname: "foo", result: 1478, qualifier: "XA"}
];
這是我迄今爲止:
pixel = map.getEventPixel(evt.originalEvent);
map.forEachFeatureAtPixel(pixel, function (feature, layer) {
var featureprops = feature.getProperties();
var array = $.map(featureprops, function(value, index) {
return {name:index, value:value};
});
console.log(array);
Object.defineProperty(Array.prototype, 'group', {
enumerable: false,
value: function (key) {
var map = {};
this.forEach(function (e) {
if(e.name=='chemical_name') {
var k = key(e);
map[k] = map[k] || [];
map[k].push(e);
}
if(e.name=='result_numeric') {
var k = key(e);
map[k] = map[k] || [];
map[k].push(e);
}
if(e.name=='lab_qualifiers') {
var k = key(e);
map[k] = map[k] || [];
map[k].push(e);
}
});
return Object.keys(map).map(function (k) {
return {key: k, data: map[k]};
});
}
});
var newArray = array.group(function (item) {
return item.chemical_name;
});
console.log(newArray);
//other code follows
有沒有更有效的方法來建立這個?此外,此功能現在僅返回第一個功能的屬性。我需要爲每個樣本構建數組,並根據每個獨特樣本進行分組。
輸出我希望會是這樣的
{
name: 'samp1',
results: [{
key:'chemicalname',
value: foo1
},{
key: 'result',
value: 16
},{
key: 'qualifier',
value: 'X'
},{
key:'chemicalname',
value: foo
},{
key: 'result',
value: 10
},{
key: 'qualifier',
value: 'X'
},{
key:'chemicalname',
value: foo1
},{
key: 'result',
value: 109
},{
key: 'qualifier',
value: 'X'
},{
key:'chemicalname',
value: foo
},{
key: 'result',
value: 418
},{
key: 'qualifier',
value: 'A'
}],
name: 'samp2',
results: [{
key:'chemicalname',
value: foo1
},{
key: 'result',
value: 411
},{
key: 'qualifier',
value: 'AU'
},{
key:'chemicalname',
value: foo
},{
key: 'result',
value: 4
},{
key: 'qualifier',
value: 'Z'
},{
key:'chemicalname',
value: foo1
},{
key: 'result',
value: 1
},{
key: 'qualifier',
value: 'XY'
}
}],
name: 'samp3',
results: [{
key:'chemicalname',
value: foo1
},{
key: 'result',
value: 100
},{
key: 'qualifier',
value: 'X'
},{
key:'chemicalname',
value: foo
},{
key: 'result',
value: 140
},{
key: 'qualifier',
value: 'AX'
}],
name: 'samp4',
results: [{
key:'chemicalname',
value: 'foo'
},{
key: 'result',
value: 1478
},{
key: 'qualifier',
value: 'XA'
}]
}
請包括預期的輸出 – baao
'這是一個數據的例子:' - 如何在數據的例子,因爲它是在代碼中...你說它是一個數組,但你所展示的不是一個數組 –
您可以向我們展示您的起始數據和您想要的內容,並以一種在作業右側有效的形式顯示。 – Jack