Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查JS对象中是否存在数组元素的更好方法?_Javascript_Jquery_Arrays_Json_Loops - Fatal编程技术网

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可以随意推荐