如何基于这个简单对象构建这个复杂的数组
How to build out this complex Array based on this Simple Object
http://jsfiddle.net/leongaban/tuhgns3q/
我的简单对象:
{
portfolio: "AAPL",
t1_tag1: "1111",
t2_tag1: "2222",
t3_tag1: "3333",
ticker1: "AA",
ticker2: "GOOG",
ticker3: "AAPL"
}
下面是期望的最终结果。对象数组包含对象数组:
[
0:Object {
tags: [
0:Object {
t1_tag1: "1111"
}
]
ticker: ticker1
},
1:Object {
tags: [
0:Object {
t2_tag2: "2222"
}
]
ticker: ticker2
},
3:Object {
tags: [
0:Object {
t3_tag3: "3333"
}
]
ticker: ticker3
}
]
有没有更简单的方法来实现 _lodash?
以下是我仅使用 vanilla JavaScript 而没有 lodash 或下划线的想法:
function expand(simple) {
var outerArray = [], innerArray,
outerIndex = 1, innerIndex,
outerObject, innerObject;
while (("ticker" + outerIndex) in simple) {
innerArray = [];
innerIndex = 1;
while (("t" + outerIndex + "_tag" + innerIndex) in simple) {
innerObject = {};
innerObject["t" + outerIndex + "_tag" + innerIndex] = simple["t" + outerIndex + "_tag" + innerIndex];
innerArray.push(innerObject);
innerIndex++;
}
outerObject = {
tags: innerArray,
ticker: simple["ticker" + outerIndex]
};
outerArray.push(outerObject);
outerIndex++;
}
return outerArray;
}
console.log(expand({
portfolio: "AAPL",
t1_tag1: "1111",
t2_tag1: "2222",
t3_tag1: "3333",
ticker1: "AA",
ticker2: "GOOG",
ticker3: "AAPL"
}));
http://jsfiddle.net/leongaban/tuhgns3q/
我的简单对象:
{
portfolio: "AAPL",
t1_tag1: "1111",
t2_tag1: "2222",
t3_tag1: "3333",
ticker1: "AA",
ticker2: "GOOG",
ticker3: "AAPL"
}
下面是期望的最终结果。对象数组包含对象数组:
[
0:Object {
tags: [
0:Object {
t1_tag1: "1111"
}
]
ticker: ticker1
},
1:Object {
tags: [
0:Object {
t2_tag2: "2222"
}
]
ticker: ticker2
},
3:Object {
tags: [
0:Object {
t3_tag3: "3333"
}
]
ticker: ticker3
}
]
有没有更简单的方法来实现 _lodash?
以下是我仅使用 vanilla JavaScript 而没有 lodash 或下划线的想法:
function expand(simple) {
var outerArray = [], innerArray,
outerIndex = 1, innerIndex,
outerObject, innerObject;
while (("ticker" + outerIndex) in simple) {
innerArray = [];
innerIndex = 1;
while (("t" + outerIndex + "_tag" + innerIndex) in simple) {
innerObject = {};
innerObject["t" + outerIndex + "_tag" + innerIndex] = simple["t" + outerIndex + "_tag" + innerIndex];
innerArray.push(innerObject);
innerIndex++;
}
outerObject = {
tags: innerArray,
ticker: simple["ticker" + outerIndex]
};
outerArray.push(outerObject);
outerIndex++;
}
return outerArray;
}
console.log(expand({
portfolio: "AAPL",
t1_tag1: "1111",
t2_tag1: "2222",
t3_tag1: "3333",
ticker1: "AA",
ticker2: "GOOG",
ticker3: "AAPL"
}));