javascript foreach返回包含名称的结果
javascript foreach return results containing name
我有下面的javascript,它为每个项目返回name1值。
var data = [{"name1": "aaa", "name2":"bbb", "other":"ccc"},{"name1": "ddd", "name2":"eee", "other":"fff"}];
function logArrayElements(element, index, array) {
contName = element.name1;
console.log('a[' + index + '] = ' + contName);
}
data.forEach(logArrayElements);
//returns below in console
a[0] = aaa
a[1] = ddd
我想返回包含每个项目名称的所有值。我可以通过添加来做到这一点
contName2 = element.name2;
console.log('a[' + index + '] = ' + contName);
然而,我不想把它列出来,因为在不同的场合我会有不同数量的"名字"。我知道在搜索字符串时,我可以做下面的操作,但无法找到如何将类似于上面的操作?
var myName = "name2";
console.log(myName.indexOf("name") > -1);
您可以使用array.filter,然后像这样遍历数组中的每个对象:
var myArray = [
{"name1": "aaa", "name2":"bbb", "other":"ccc"},
{"name1": "ddd", "name2":"eee", "other":"fff"}
];
myArray.filter(function(row){
for( key in row ){
if( key.indexOf('name') === 0 ){ // only matches keys **starting** with "name"
console.log( 'a[' + key + '] = ' + row[key] );
}
}
});
以下是我要做的。
我会循环浏览你对象的密钥,找到那些以"name"开头的:
function logArrayElements(element, index, array) {
for(var i in element){
if(i.indexOf('name') === 0){
contName = element[i];
console.log('a[' + index + '] = ' + contName);
}
}
}
我知道我在游戏中有点晚了,但我只是想用lodash为混合添加另一种选择。
var data = [{
"name1": "aaa",
"name2": "bbb",
"other": "ccc"
}, {
"name1": "ddd",
"name2": "eee",
"other": "fff"
}];
function getFields(data, expression) {
var re = new RegExp(expression, "i");
return _.reduce(data, function(result, object) {
return _.union(result, _.reduce(object, function(list, value, key) {
if (re.test(key)) {
return _.union(list, [value]);
} else {
return list;
}
}, []));
}, []);
}
alert(getFields(data, '^name'));
alert(getFields(data, '^other'));
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
上面的这个函数返回作为数组找到的所有名称。该函数接受两个参数:要搜索的数组和与要返回的值的键名匹配的正则表达式。
相关文章:
- 数据绑定:'系统Char'不包含名为'xxxxx'
- 包含插入的Meteor方法没有返回记录ID作为结果
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 检索本身包含变量的 Jquery 变量名的值
- jQuery 在结果中包含创建的子项
- 不要在顺序链式承诺中包含 q 承诺结果
- 如何在element.select的结果中包含当前元素
- 将.split()结果分配给名为'name'
- 如何在php JSON编码结果中包含谷歌分析
- 如何在字符之间进行匹配,但不将它们包含在结果中
- 使用动态变量名更新JSON中的结果
- jQuery验证字段名包含方括号的组
- 拥有Gruntname文件,并通过Gruntfile.js包含带有源文件名的横幅
- 如何在PHP中包含动态Javascript页面的静态HTML结果
- 如何在Chrome扩展名的内容JS文件中包含其他JavaScript文件
- Meteor.js HTTP.get 获取 JSON 引号并解析结果似乎包含一个回调函数
- 如何使用包含对象键名的变量访问对象属性
- 为什么结果包含多个具有相同值的副本
- 如果结果包含键,如何停止ajax计时器
- 在build.phonegap. js中构建应用程序时,包含名为phonegap.js或coredova.js的文件