我有一个JS对象,我试图循环并更改。
的值以下对象的示例:
var response = {
'2433345':
[
{
taskId: 20295179,
stageId: 'AB-5R-GF',
},
{
taskId: 20295176,
stageId: 'AB-5R-GF',
},
],
'2539643':
[
{
taskId: 28295179,
stageId: 'AB-5R-RD',
},
{
taskId: 20445176,
stageId: 'AB-5R-ZZ',
},
]
}
父值是JobID,然后是一个数组,其中包含该作业中每个阶段和任务的嵌套对象。
我正在尝试迭代并将stageID值更改为连续数字。作业中的每个数字都高于最后一个,保留重复的相同数字。
期望的结果是:
var response = {
'2433345':
[
{
taskId: 20295179,
stageId: 1,
},
{
taskId: 20295176,
stageId: 1,
},
],
'2539643':
[
{
taskId: 28295179,
stageId: 1,
},
{
taskId: 20445176,
stageId: 2,
},
]
}
我想知道解决这个问题的最佳方法是什么?使用Lodash和_.uniqBy是最好的方法吗?
答案 0 :(得分:2)
即使您没有显示自己的代码 - 这是我自己的尝试。
未经测试 - 但这是一个解释。
重建结果,我们从var index = 0;
var finalResult = _.reduce(response, function(result, value, key) {
indexOfIDs = {};
result[key] = [];
_.each(value, function(item){
if(typeof indexOfIds[item.taskId] !== 'undefined'){
result[key].push(_.assign(item, {stageId: indexOfIds[item.taskId]}))
} else {
indexOfIds[item.taskId] = index++;
result[key].push(_.assign(item, {stageId: index}))
}
})
return result;
}, {})
开始,对于每个值的数组项,我们使用递增的索引来编写stageItem。
我们在旁边保留一个列表,以跟踪数组中项目的索引,并检查我们是否为stageId或列表中的现有索引添加新索引。
0501 02:16:17.345309 2433 net.cpp:400] loss -> loss
I0501 02:16:17.345317 2433 layer_factory.hpp:77] Creating layer loss
F0501 02:16:17.345377 2433 softmax_loss_layer.cpp:47] Check failed: outer_num_ * inner_num_ == bottom[1]->count() (7056 vs. 65536) Number of labels must match number of predictions; e.g., if softmax axis == 1 and prediction shape is (N, C, H, W), label count (number of labels) must be N*H*W, with integer values in {0, 1, ..., C-1}.
*** Check failure stack trace: ***
@ 0x7f7d2c9575cd google::LogMessage::Fail()
@ 0x7f7d2c959433 google::LogMessage::SendToLog()
@ 0x7f7d2c95715b google::LogMessage::Flush()
@ 0x7f7d2c959e1e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f7d2d02d4be caffe::SoftmaxWithLossLayer<>::Reshape()
@ 0x7f7d2d0c61df caffe::Net<>::Init()
@ 0x7f7d2d0c7a91 caffe::Net<>::Net()
@ 0x7f7d2d0e1a4a caffe::Solver<>::InitTrainNet()
@ 0x7f7d2d0e2db7 caffe::Solver<>::Init()
@ 0x7f7d2d0e315a caffe::Solver<>::Solver()
@ 0x7f7d2cf7b9f3 caffe::Creator_SGDSolver<>()
@ 0x40a6d8 train()
@ 0x4075a8 main
@ 0x7f7d2b40b830 __libc_start_main
@ 0x407d19 _start
@ (nil) (unknown)