我有下一个对象:
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]。
如何?
答案 0 :(得分:1)
您可以使用reduce
遍历日期数组。检查该值是否与日期concat
和u.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));