从2个阵列创建一个数组,键为x& ÿ

时间:2017-01-26 20:47:58

标签: javascript arrays functional-programming ramda.js

我有2个阵列xDatesyMentions

xDates

[1453766400000, 1453852800000, 1453939200000...

yMentions

[5160, 5240, 7090...

目标是一个像这样的数组:

[
    {
       x: 1453766400000,
       y: 5160
    },
    ...
]

尝试使用Ramda Zip以为zipObj是我需要的,但以下只生成1个对象:

R.zipObj(['x', 'x', 'x'], [1, 2, 3]); => {"x": 3}

想想也许我在x和y数组上运行R.zipObj,然后将它们压缩在一起,然后将其设置为下面mentionsPointsArray的数组:

const createMentionPoints = (frequencyPoints, termsData) => {
    const yMentions = termsData.mentions;
    const propX = R.prop('x');
    const xPointsFromFrequency = R.map(propX, frequencyPoints);
    console.log('xDates', xPointsFromFrequency)
    console.log('yMentions', yMentions)
    const mentionsPointsArray = []
    return frequencyPoints;
};

3 个答案:

答案 0 :(得分:2)

您应该使用Array#map功能。

map()方法创建一个新数组,其结果是在array中的每个元素上调用提供的函数。提供的函数是callback

结果数组中的元素是对象,如下所示:{"x":item, "y":yMentions[i]}



var xDates=[1453766400000, 1453852800000, 1453939200000];
var yMentions=[5160, 5240, 7090];
console.log(xDates.map(function(elem,i){
    return {"x":elem,"y":yMentions[i]}
}));




答案 1 :(得分:2)

The ramda solution http://ramdajs.com/docs/#zipWith

<a *ngFor="let slipStatus of slipStatuses; class="item striped"
     [ngClass]="{
       'green background': slipStatus.status === 'SOLD',
       'yellow background': slipStatus.status === 'IN PROGRESS',
       'blue background': slipStatus.status === 'DONE'
     }">

答案 2 :(得分:1)

我认为最干净的无点版本将是:

const data1 = ['a', 'b', 'c']
const data2 = [1, 2, 3]

R.zipWith(R.objOf, data1, data2)

请查看有效的REPL here