通过其他子数组的值获取子数组

时间:2018-11-24 15:59:46

标签: javascript

我有下一个对象:

u = {date:[1,2,2,1,5,6,2,8], uid:[11,22,33,44,55,66,77,88]}

我想通过'date'子数组从'uid'子数组中获取值数组。 像这样:给我提供日期为“ 1”的uid。 结果:[11,44]。

如何?

3 个答案:

答案 0 :(得分:1)

您可以使用reduce遍历日期数组。检查该值是否与日期concatu.uid[i]与累加器相同。

var u = {
  date: [1, 2, 2, 1, 5, 6, 2, 8],
  uid: [11, 22, 33, 44, 55, 66, 77, 88]
}

var date = 1;
var result = u.date.reduce((c, v, i) => v === date ? c.concat(u.uid[i]) : c, []);

console.log(result);

答案 1 :(得分:1)

您可以结合使用map(如果每个date元素与您的目标日期匹配,则将其转换为相应的uid元素)和filter(仅在最终数组中保留“有趣”的结果)的组合:

var u = {
  date: [1, 2, 2, 1, 5, 6, 2, 8],
  uid: [11, 22, 33, 44, 55, 66, 77, 88]
};

function getUid(date) {
  return u.date.map((d, i) => d === date ? u.uid[i] : false)
               .filter(v => v);
}

console.log(getUid(1));
console.log(getUid(5));

答案 2 :(得分:1)

如果日期是所需日期,则可以通过在相同的索引处获取相应的uid值来减少日期数组。

function getUID(date) {
    return u.date.reduce(
        (r, d, i) => d === date
            ? r.concat(u.uid[i])
            : r,
        []
    );
}

var u = { date: [1, 2, 2, 1, 5, 6, 2, 8], uid: [11, 22, 33, 44, 55, 66, 77, 88] };

console.log(getUID(1));