javascript foreach返回包含名称的结果

时间:2014-10-06 03:18:45

标签: javascript html foreach

我有以下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);

3 个答案:

答案 0 :(得分:2)

您可以使用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] );

        }

    }

});

答案 1 :(得分:1)

这就是我要做的事。

我会遍历你的对象的键,找到那些以'name'开头的人:

function logArrayElements(element, index, array) {
  for(var i in element){
      if(i.indexOf('name') === 0){
          contName = element[i];
          console.log('a[' + index + '] = ' + contName);
      }
  }
}

答案 2 :(得分:1)

我知道我在比赛中有点晚了,但我只是想用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>

上面的这个函数返回所有作为数组找到的名字。该函数接受两个参数:要搜索的数组和正则表达式,以匹配要返回的值的键名。