gpt4 book ai didi

javascript - 如何根据指定属性以外的属性数将对象附加到数组?

转载 作者:行者123 更新时间:2023-11-29 23:14:24 25 4
gpt4 key购买 nike

例如,我有一个这样的对象数组:

[

{
"waterfallData.PopulationName":"Population 1",
"Deaths":-2333,
"Births":8786,
"open":0,
"close":6453
},
{
"waterfallData.PopulationName":"Population 2",
"Deaths":-1000,
"Births":5000,
"open":0,
"close":10453
},
{
"waterfallData.PopulationName":"Population 3",
"Deaths":-2000,
"Births":500,
"open":0,
"close":8953
}
]

我想像这样在每个种群之间添加两个(不一定是两个,如果有 "Extra Births" 那么三个)中间对象

[

{
"waterfallData.PopulationName":"Population 1",
"Death":-2333,
"Births":8786,
"open":0,
"close":6453
},
{
"Deaths" : -1000,
"open" : 6453,
"close" : 5453
},
{
"Births" : 5000,
"open" : 5453,
"close : 10453
}
{
"waterfallData.PopulationName":"Population 2",
"Deaths":-1000,
"Births":5000,
"open":0,
"close":10453
},
{
"Deaths" : -2000,
"open" : 10453,
"close" : 8453
},
{
"Births" : 500,
"open" : 8453,
"close" : 8953
}
{
"waterfallData.PopulationName":"Population 3",
"Deaths":-2000,
"Births":500,
"open":0,
"close":8953
}
]

正如您所看到的,我想根据 waterfallData.PopulationName 以外的属性数量添加对象, openclose特性。然后,我想分配 openclose每个对象的属性基于下一个 "Deaths""Births"值。

例如,Population 1从 6453 开始,然后我添加两个对象,第一个对象占用下一个 "Deaths" Population 2 中的值这是 -1000 然后我分配 open属性来自以前的 close Population 1的属性(property)和 close要通过添加分配的 open 来计算的属性属性(property)"Deaths"的值(value)。第二个额外的对象也是如此,我在其中分配了 open属性为 close前一个对象的属性和 close要通过添加 open 来计算的属性与 "Births"的值(value)。

我如何实现这一目标?

最佳答案

粗糙..但有效

var newArr = [];
$x = [{
"waterfallData.PopulationName":"Population 1",
"Deaths":-2333,
"Births":8786,
"open":0,
"close":6453
},{
"waterfallData.PopulationName":"Population 2",
"Deaths":-1000,
"Births":5000,
"open":0,
"close":10453
},{
"waterfallData.PopulationName":"Population 3",
"Deaths":-2000,
"Births":500,
"open":0,
"close":8953
}];
$x.forEach((p,i)=>{
var current = $x[i]
newArr.push(current)
try {
var next = $x[i+1];
var start = current.open;
var end = current.close;
var states = Object.keys(current).sort().filter((k)=>{return (['waterfallData.PopulationName','open','close'].indexOf(k) < 0)})
for (var i=0;i<states.length;i++){
var state = states[i]
var tempObj = {}
tempObj[states[i]] = next[states[i]]
tempObj['open'] = end;
end += next[states[i]];
tempObj['close'] = end;
newArr.push(tempObj)
}
} catch (e) {
return false;
}
})

代码将查找除 waterfallData.Popu..、open、close 之外的所有属性,并将它们视为状态。如果你有10个属性,除了上面的3个,还有7个状态。然后从下一个元素开始计算这些状态的开盘价和收盘价,并插入新的数组newArr。

关于javascript - 如何根据指定属性以外的属性数将对象附加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53221806/

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