我有 2 个数组:
时间戳数组:
var timeStamp = [["0:00","1:00"], ["2:00","3:00"]];
时间标签引用:
var timeLabels = [
{ name: "0:00", present: true, label: ["0:00", "1:00"], alterName:"" },
{ name: "1:00", present: true, label: ["1:00", "2:00"], alterName:"" },
{ name: "2:00", present: true, label: ["2:00", "3:00"], alterName:"" }]
我想使用 Lodash
来过滤 TimeStamp 数组,但我想要的方法仅限于对象数组。我目前有一个 for 循环,它不是很优雅。
最终,我想创建一个 TimeLabels 对象数组,如果时间出现在 timeStamp 的第一个索引
中,则将 present
字段设置为 True 或 False。
引用上面的时间戳数组,结果将是:
var timeResult = [
{ name: "0:00", present: true, label: ["0:00", "1:00"], alterName:"" },
{ name: "1:00", present: false, label: ["1:00", "2:00"], alterName:"" },
{ name: "2:00", present: true, label: ["2:00", "3:00"], alterName:"" }]
我更习惯使用 lodash,但我想知道其他方法是否可以更好地构建解决方案,或者我当前使用的 for 循环是否可以。
最佳答案
timeLabels
中的 Foreach 元素使用 indexOf
来确定 timestamp
中是否存在 label
。要使用indexOf 您必须使用 JSON.stringify() 将对象转换为字符串。
var timeLabels = [
{ name: "0:00", present: true, label: ["0:00", "1:00"], alterName:"" },
{ name: "1:00", present: true, label: ["1:00", "2:00"], alterName:"" },
{ name: "2:00", present: true, label: ["2:00", "3:00"], alterName:"" }];
timeStamp = [["0:00","1:00"], ["2:00","3:00"]];
results = timeLabels.forEach(function(res){
label = JSON.stringify(res.label);//converts into string
ts = JSON.stringify(timeStamp);//converts into string
if(ts.indexOf(label)>=0){ //checks whether label is present or not
res.present = true;
}
else{
res.present = false;
}
});
console.log(timeLabels);
关于javascript - 在 Javascript 中过滤数组并将其引用为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358303/