【问题标题】:Merge duplicate array keys in a javascript array [closed]合并javascript数组中的重复数组键[关闭]
【发布时间】:2016-05-02 19:49:35
【问题描述】:

我的数组:

{ { PID : [ '1' , '2' , '3' , ..] } , PID : [ '5' , '6' , '7' , '8' ....] , PID : .....} }

这是一个杂乱无章的数组,我想将我的结果合并干净:

结果:

{ {PID : [ '1' , '2' , '3' , .. , '5' , '6' , '7' and so on ] }}

我的代码(伪):

var links = [];

while( looping of a condition )
{

links.push( function(){

var xArr = [];
var yArr = [];
$.each(function(){
xArr.push(somevalue);
yArr.push(somevalue);
})

return { PID : xArr , SKU : yArr  } );

}

这段复杂的代码在重复键“PID”下生成了一个包含多个数组的数组。

我尝试过的:

1.将 xArr 和 yArr 推入 zArr 并返回。

我不太清楚如何进行,我同意我目前还不是 javascript 数组方面的专家。我只是要求一种解决这个问题的方法,或多或少是一种伪解释。

【问题讨论】:

  • [ ... ] 我喜欢这个神秘的音符!您尝试过什么,为什么没有奏效?请阅读:How to Ask
  • 您的示例对象似乎没有意义,您可以看看它并确保它是正确的吗?你有没有尝试过?
  • 没有预期的结果,没有人可以帮助你。
  • 记录那不是一个数组,而是对象里面有两个数组。
  • 另外,这并不是一个真正的问题,而是要求某人为您编写代码。

标签: javascript jquery arrays json


【解决方案1】:

如果将其更改为包含对象的数组,则可以使用 reduce

var ar = [{PID: ['1', '2', '3', ]}, {PID: ['5', '6', '7', '8']}];

ar = ar.reduce(function(a, el) {
  a.PID = (a.PID || []).concat(el.PID);
  return a
}, {})

console.log(ar);

【讨论】:

【解决方案2】:

输入元素错误,我根据Reduce想出了类似的东西:

var arr = [ { PID : [ '1' , '2' , '3'] } , {PID : [ '5' , '6' , '7' , '8'] }];

var result = arr.reduce(function(previousValue, currentValue) {
  return {PID: previousValue.PID.concat(currentValue.PID)};
});

document.write(JSON.stringify(result, 4, 4));

【讨论】:

  • 非常感谢!但是 Nenad Vracar 的回答是第一位的,所以我不得不奖励他,无论哪种情况,我都无法理解这个概念是如何运作的。 reduce 函数到底是做什么的?
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2016-05-27
  • 2013-09-18
  • 2020-09-20
  • 2018-07-01
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多