javascript - 在 Javascript 中过滤数组并将其引用为对象数组

标签 javascript arrays filter lodash

我有 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/

相关文章:

javascript - 将字符串解析为 DOM

java - 如何获取初始化数组大小的用户输入(数组是全局声明的)JAVA

filter - Devexpress Gridview 过滤器控件

javascript - 使用 tr :nth-child(n) selector in a jQuery function

javascript - 有可能在 JavaScript 中为 "overwrite a pointer"吗?

javascript - Table .append() 同时发生

Python:屏蔽列表的优雅而有效的方法

javascript - 使用新对象中的值更新原始对象中的值,如果不存在则将值设置为 0

arrays - 通过数组过滤器长度查询ElasticSearch

linux - 是否有相当于 PowerShell 的 CmdLets 的 Bash,它充当管道过滤器?