Javascript是否获取数组中键的所有值?

Javascript是否获取数组中键的所有值?,javascript,Javascript,如果没有jQuery,如何获取数组中键的所有值 var species = [{"code_name":"b","public_name":"a"},{"code_name":"d","public_name":"c"},{"code_name":"f","public_name":"e"}]; var speciesVals = Object.keys(species).map(function (val, key) { return val; }); 结果: [ '0', '

如果没有jQuery,如何获取数组中键的所有值

var species = [{"code_name":"b","public_name":"a"},{"code_name":"d","public_name":"c"},{"code_name":"f","public_name":"e"}];

var speciesVals = Object.keys(species).map(function (val, key) {
    return val;
});
结果:

[ '0',
  '1',
  '2',
  '_atomics',
  '_parent',
  '_cast',
  '_markModified',
  '_registerAtomic',
  '$__getAtomics',
  'hasAtomics',
  '_mapCast',
  'push',
  'nonAtomicPush',
  '$pop',
  'pop',
  '$shift',
  'shift',
  'pull',
  'splice',
  'unshift',
  'sort',
  'addToSet',
  'set',
  'toObject',
  'inspect',
  'indexOf',
  'remove',
  '_path',
  'isMongooseArray',
  'validators',
  '_schema' ]
但我追求的是:

["code_name":["b", "d", "d"], "public_name":["a", "c", "e"]
可能吗

编辑:

那么这个呢:

[{“code\u name”:[“b”、“d”、“d”]},{“public\u name”:[“a”、“c”、“e”}]

使用JavaScript方法

var物种=[{
“代码名称”:“b”,
“公共名称”:“a”
}, {
“代码名称”:“d”,
“公共名称”:“c”
}, {
“代码名称”:“f”,
“公共名称”:“e”
}];
var temp=物种减少(功能(res,v){
//迭代对象(数组元素)
Object.keys(v).forEach(函数(k){
//如果未定义,则将属性定义为数组
res[k]=res[k]| |[];
//将值推送到首选数组
res[k].push(v[k]);
});
//返回更新的对象
返回res;
//将初始值定义为对象以保存结果
}, {});
//现在创建您的预期结果
var speciesVals=Object.keys(temp)//获取所有属性名
.map(函数(v){//迭代它们以生成结果数组
var obj={};//为创建对象
obj[v]=temp[v];//添加属性
return obj;//返回对象(新数组元素)
});
log(speciesVals);
使用JavaScript方法

var物种=[{
“代码名称”:“b”,
“公共名称”:“a”
}, {
“代码名称”:“d”,
“公共名称”:“c”
}, {
“代码名称”:“f”,
“公共名称”:“e”
}];
var temp=物种减少(功能(res,v){
//迭代对象(数组元素)
Object.keys(v).forEach(函数(k){
//如果未定义,则将属性定义为数组
res[k]=res[k]| |[];
//将值推送到首选数组
res[k].push(v[k]);
});
//返回更新的对象
返回res;
//将初始值定义为对象以保存结果
}, {});
//现在创建您的预期结果
var speciesVals=Object.keys(temp)//获取所有属性名
.map(函数(v){//迭代它们以生成结果数组
var obj={};//为创建对象
obj[v]=temp[v];//添加属性
return obj;//返回对象(新数组元素)
});

console.log(speciesVals);
确保这是可能的。如果数组中每个对象的对象键都相同,则可以执行以下操作:

var species=[{“code_name”:“b”,“public_name”:“a”},{“code_name”:“d”,“public_name”:“c”},{“code_name”:“f”,“public_name”:“e”}];
var res={code_name:[],public_name:[]};
对于(变量i=0;iconsole.log(res);
确保这是可能的。如果数组中每个对象的对象键都相同,则可以执行以下操作:

var species=[{“code_name”:“b”,“public_name”:“a”},{“code_name”:“d”,“public_name”:“c”},{“code_name”:“f”,“public_name”:“e”}];
var res={code_name:[],public_name:[]};
对于(变量i=0;iconsole.log(res);
我建议对属性使用固定数组,因为您只需要
'code\u name
public\u name

var species=[{“code_name”:“b”,“public_name”:“a”},{“code_name”:“d”,“public_name”:“c”},{“code_name”:“f”,“public_name”:“e”}],
speciesVals={};
物种。forEach(功能(a){
['code_name','public_name'].forEach(函数(k){
物种[k]=物种[k]| |[];
speciesVals[k].push(a[k]);
});
});

console.log(speciesVals);
我建议对属性使用固定数组,因为您只需要
'code\u name
public\u name

var species=[{“code_name”:“b”,“public_name”:“a”},{“code_name”:“d”,“public_name”:“c”},{“code_name”:“f”,“public_name”:“e”}],
speciesVals={};
物种。forEach(功能(a){
['code_name','public_name'].forEach(函数(k){
物种[k]=物种[k]| |[];
speciesVals[k].push(a[k]);
});
});

console.log(speciesVals);
为什么不直接使用循环?
for(var-result={},i=0,l=species.length,k;我为什么不直接使用循环?
for(var-result={},i=0,l=species.length,k;i欢迎!是的,不需要过度复杂,因为这是一个简单的老式迭代任务。:)我完全同意你的看法。你想得太多了。原型方面!如果你计划做很多变化(比如获取不同的键,使用不同的原始数组结构,结果的不同组织,等等),这是有道理的,但是如果你想要一个能有效地解决这个单一任务的代码,我每次都会使用一个循环。很酷。谢谢你的提示。顺便问一下,我怎样才能把它改成
[{“code_name”:[“b”,“d”,“d”]},{“public_name”:[“a”,“c”,“e”}]
-数组中的对象?没问题,我很高兴能帮上忙。不客气!是的,不需要过度复杂,因为这是一个简单的老式迭代任务。:)我完全同意你的看法。我们过度考虑了。原型方面!如果你计划做很多变化,这是有道理的(比如获取不同的键,使用不同的原始数组结构,不同的结果组织等等),但是如果你想要一个代码能够有效地解决这个单一任务,我每次都会使用一个循环。很酷。谢谢你的提示。顺便问一下,我怎样才能改为
[{“code\u name”:[“b”,“d”,“d”],{“public\u name”:[“a”,“c”,“e”}]
-数组中的对象?没问题,我很高兴能帮上忙。谢谢。这个怎么样:
[{“code\u name”:[“b”、“d”、“d”],{“public\u name”:[“a”、“c”、“e”}]
?@teelou:很高兴帮助你:)谢谢。这个怎么样:
[{“code\u name”:[“b”、“d”、“d”},{“public\u name”:[“a”、“c”、“e”}],
?@teelou很高兴帮助你:)