mysql rowdatapacket_arrays – 将此RowDataPacket对象数组缩小为单个对象
我正在使用node.js
我在下面有這個RowDataPacket對象數(shù)組;
{
_ID: 4,
_NAME: "Switch4",
_CASE_COUNTER: 1,
_CASE_ID: 1
},
{
_ID: 4,
_NAME: "Switch4",
_CASE_COUNTER: 2,
_CASE_ID: 2
}
{
_ID: 4,
_NAME: "Switch4",
_CASE_COUNTER: 3,
_CASE_ID: 3
}
我想將這個RowDataPacket對象數(shù)組縮小為一個對象.萎縮后,它會是這樣的;
{
_ID: 4,
_NAME: "Switch4",
_CASE_COUNTER: 1,
_CASE_ID: 1,
_CASE_COUNTER: 2,
_CASE_ID: 2,
_CASE_COUNTER: 3,
_CASE_ID: 3
}
鍵_ID和_NAME在RowDataPacket對象的數(shù)組中具有相同的值.其他鍵將具有不同的值.如何在node.js v4.7.x中完成?
編輯:它不是原始問題中提到的json對象數(shù)組.它是一個RowDataPacket對象數(shù)組,它是MySQL查詢的結(jié)果.
最佳答案 對象不能有幾個相同的鍵.
我建議你把這些數(shù)據(jù)收集到數(shù)組中:
function combine(list) {
return list.reduce((carry, o) => {
for (var k in o) {
if (!carry[k]) carry[k] = [];
carry[k].push(o[k]);
}
return carry;
}, {});
}
var input = [];
input.push({id: 1, tag: 'Tag#1'});
input.push({id: 2, tag: 'Tag#2'});
input.push({id: 3, tag: 'Tag#3'});
var res = combine(input);
console.log(res);
對于不同鍵的不同行為,我們應該提供一些模式:
function combine(list, schema) {
return list.reduce((carry, o) => {
for (var k in o) {
switch (schema[k]) {
case 'scalar': carry[k] = o[k]; break;// Overwrite
default:
case 'array':
if (!carry[k]) carry[k] = [];
carry[k].push(o[k]);
break;
}
}
return carry;
}, {});
}
var input = [];
input.push({id: 1, tag: 'Tag#1'});
input.push({id: 1, tag: 'Tag#2'});
input.push({id: 1, tag: 'Tag#3'});
var res = combine(input, {id: 'scalar', tag: 'array'});
console.log(res);
總結(jié)
以上是生活随笔為你收集整理的mysql rowdatapacket_arrays – 将此RowDataPacket对象数组缩小为单个对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳零基础自学python_深圳学习py
- 下一篇: python处理windows弹窗_Py