Javascript 检查JS对象中是否存在数组元素的更好方法?
我的应用程序中有一个功能,允许用户在下拉菜单中选择项目并上下移动。一旦他们选择并点击按钮,我就必须在对象数组上循环,并只拉下拉菜单中选择的记录。下面是我的代码示例:Javascript 检查JS对象中是否存在数组元素的更好方法?,javascript,jquery,arrays,json,loops,Javascript,Jquery,Arrays,Json,Loops,我的应用程序中有一个功能,允许用户在下拉菜单中选择项目并上下移动。一旦他们选择并点击按钮,我就必须在对象数组上循环,并只拉下拉菜单中选择的记录。下面是我的代码示例: var selectedColumns = ['first','last','city']; var data = [ { first: "Mike", last: "Ross", dob: "05/26/1978", city: "Washington DC",
var selectedColumns = ['first','last','city'];
var data = [
{
first: "Mike",
last: "Ross",
dob: "05/26/1978",
city: "Washington DC",
state: "DC",
zip: 22904
},
{
first: "John",
last: "Henderson",
dob: "11/06/1988",
city: "Iowa City",
state: "IA",
zip: 52401
},
{
first: "Nina",
last: "Barkley",
dob: "01/16/1968",
city: "New York",
state: "NY",
zip: 11308
},
{
first: "Jessie",
last: "Kuch",
dob: "02/02/1956",
city: "Des Moines",
state: "IA",
zip: 55432
},
{
first: "Jenny",
last: "Terry",
dob: "012/28/1988",
city: "Miami",
state: "FL",
zip: 83943
}
]
在所选列中,我们只有第一个
、最后一个
和城市
。然后我必须循环查看数据
,并只拉取选定的列。一种方法是:
for(var key in data){
for(var i=0; i<selectedColumns.lenght; i++){
var columnID = String(columns[i]);
console.log($.trim(data[key][columnID]));
}
}
for(变量输入数据){
对于(var i=0;i,您将发现适合此用例
var words=['spray'、'limit'、'elite'、'experiant'、'destruction'、'present'];
const result=words.filter(word=>{
返回单词长度>6;
});
控制台日志(结果);
//预期输出:数组[“旺盛”、“破坏”、“呈现”]
您将发现适合此用例
var words=['spray'、'limit'、'elite'、'experiant'、'destruction'、'present'];
const result=words.filter(word=>{
返回单词长度>6;
});
控制台日志(结果);
//预期输出:可以使用的数组[“旺盛”、“破坏”、“呈现”]
,以及
var selectedColumns=['first','last','city'];
var数据=[{第一:“迈克”,最后:“罗斯”,dob:“1978年5月26日”,城市:“华盛顿特区”,州:“DC”,邮编:22904},{第一:“约翰”,最后:“亨德森”,dob:“1988年11月6日”,城市:“爱荷华市”,州:“IA”,邮编:52401},{第一:“尼娜”,最后:“巴克利”,dob:“1968年1月16日”,城市:“纽约”,州:“纽约”,邮编:11308},{第一:“杰西”,最后:“库奇”,dob:“1956年2月2日”,城市:“得梅因”,州:“IA”,邮编:55432},{第一个:“珍妮”,最后一个:“特里”,dob:“012/28/1988”,城市:“迈阿密”,州:“佛罗里达”,邮编:83943}];
让result=data.map(o=>selectedColumns.reduce((a,c)=>Object.assign(a,{[c]:o[c]}),{}));
console.log(结果);
您可以使用,以及
var selectedColumns=['first','last','city'];
var数据=[{第一名:“迈克”,最后一名:“罗斯”,dob:“1978年5月26日”,城市:“华盛顿特区”,州:“DC”,邮编:22904},{第一名:“约翰”,最后一名:“亨德森”,dob:“1988年11月6日”,城市:“爱荷华州”,州:“IA”,邮编:52401},{第一名:“尼娜”,最后一名:“巴克利”,dob:“1968年1月16日”,城市:“纽约”,州:“纽约”,邮编:11308},{第一名:“杰西”,最后一名:“库奇”,dob:“1956年2月2日”,城市:得梅因州:“IA”,邮编:55432},{第一个:“珍妮”,最后一个:“特里”,dob:“012/28/1988”,城市:“迈阿密”,州:“佛罗里达”,邮编:83943}];
让result=data.map(o=>selectedColumns.reduce((a,c)=>Object.assign(a,{[c]:o[c]}),{}));
console.log(result);
另一个需要提及的重要问题是,在
构造中使用for…来迭代JavaScript中的数组项通常不是一个好主意(有关一些解释,请参阅).另一个需要提及的重要问题是,在
构造中使用for…来迭代JavaScript中的数组项通常是一个坏主意(请参阅以获取一些解释)。您可以研究如何使用过滤器,根据搜索条件构建过滤方法并返回过滤后的数组
或者,如果您试图使用特定字段,您仍然可以使用过滤器
var newArr2 = data.filter(record => record.hasOwnProperty('first'))
// newArr2 would have all records with the property name
您可以研究如何使用过滤器,根据搜索条件构建过滤方法并返回过滤后的数组
或者,如果您试图使用特定字段,您仍然可以使用过滤器
var newArr2 = data.filter(record => record.hasOwnProperty('first'))
// newArr2 would have all records with the property name
通过映射想要的属性,只需一行代码
- 用于获取新的
数据数组
,以及将想要的键映射为新对象
- 以及指定给单个对象的值
- 及
- 用于将数组作为参数
var selectedColumns=['first'、'last'、'city'],
数据=[{第一:“迈克”,最后:“罗斯”,dob:“1978年5月26日”,城市:“华盛顿特区”,州:“DC”,邮编:22904},{第一:“约翰”,最后:“亨德森”,dob:“1988年11月6日”,城市:“爱荷华市”,州:“IA”,邮编:52401},{第一:“尼娜”,最后:“巴克利”,dob:“1968年1月16日”,城市:“纽约”,州:“纽约”,邮编:11308},{第一:“杰西”,最后:“库奇”,dob::1956年2月2日,“城市:“得梅因”,州:“IA”,邮政编码:55432},{第一个:“珍妮”,最后一个:“特里”,dob:“012/28/1988”,城市:“迈阿密”,州:“佛罗里达”,邮政编码:83943},
结果=data.map(o=>Object.assign(…selectedColumns.map(k=>({[k]:o[k]}));
console.log(结果);
.as控制台包装{max height:100%!important;top:0;}
通过映射所需的属性,只需一行代码
- 用于获取新的
数据数组
,以及将想要的键映射为新对象
- 以及指定给单个对象的值
- 及
- 用于将数组作为参数
var selectedColumns=['first'、'last'、'city'],
数据=[{第一:“迈克”,最后:“罗斯”,dob:“1978年5月26日”,城市:“华盛顿特区”,州:“DC”,邮编:22904},{第一:“约翰”,最后:“亨德森”,dob:“1988年11月6日”,城市:“爱荷华市”,州:“IA”,邮编:52401},{第一:“尼娜”,最后:“巴克利”,dob:“1968年1月16日”,城市:“纽约”,州:“纽约”,邮编:11308},{第一:“杰西”,最后:“库奇”,dob::1956年2月2日,“城市:“得梅因”,州:“IA”,邮政编码:55432},{第一个:“珍妮”,最后一个:“特里”,dob:“012/28/1988”,城市:“迈阿密”,州:“佛罗里达”,邮政编码:83943},
结果=data.map(o=>Object.assign(…selectedColumns.map(k=>({[k]:o[k]}));
console.log(结果);
.as console wrapper{max height:100%!important;top:0;}
@epascarello还有其他明智的评论吗?嘿,espresso_coffee。StackOverflow通常用于不起作用的代码。如果您的代码按照您的意愿工作,并且您只是在寻找改进它的方法(无论是在编写方式上,还是在效率上),您的运气可能会更好。@TylerRoper谢谢您让我知道。我不知道代码审查网站。@pushkin可以随意推荐