Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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 从对象数组中获取值_Javascript_Arrays_For Loop_Ecmascript 6 - Fatal编程技术网

Javascript 从对象数组中获取值

Javascript 从对象数组中获取值,javascript,arrays,for-loop,ecmascript-6,Javascript,Arrays,For Loop,Ecmascript 6,我在数组中循环以获得相应的字段值: var someFun = function (nm) { var names = [{name: 'joe', age: 'nine'}, {name: 'tom', age: 'ten'}]; for (var i=0; i < names.length; i++) { if (names[i].name === nm) return names[i].age; } }; var username = 't

我在数组中循环以获得相应的字段值:

var someFun = function (nm) {
    var names = [{name: 'joe', age: 'nine'}, {name: 'tom', age: 'ten'}];

    for (var i=0; i < names.length; i++) {
        if (names[i].name === nm) return names[i].age;
    }
};

var username = 'tom';
var printme = someFun(username);
console.log('hey: ', printme)
var someFun=函数(nm){
var name=[{name:'joe',age:'nine'},{name:'tom',age:'ten'}];
对于(var i=0;i

如何使用
Object.keys()
、map或forEach执行相同的操作?更干净,符合ES6标准。

只需使用
find

([{name: 'joe', age: 'nine'}, {name: 'tom', age: 'ten'}].find( (s)=> s.name=="tom" )||{}).age //10

([{name: 'joe', age: 'nine'}, {name: 'tom', age: 'ten'}].find( (s)=> s.name=="tom2" )||{}).age //undefined
演示

var名称=[{
名字:'乔',
年龄:九岁
}, {
名字:“汤姆”,
年龄:10岁
}];
函数getAge(名称、名称){
return(names.find((s)=>s.name==name)|{});
}
日志(getAge(名称,“tom”))

log(getAge(name,“tom2”)
只需使用
find

([{name: 'joe', age: 'nine'}, {name: 'tom', age: 'ten'}].find( (s)=> s.name=="tom" )||{}).age //10

([{name: 'joe', age: 'nine'}, {name: 'tom', age: 'ten'}].find( (s)=> s.name=="tom2" )||{}).age //undefined
演示

var名称=[{
名字:'乔',
年龄:九岁
}, {
名字:“汤姆”,
年龄:10岁
}];
函数getAge(名称、名称){
return(names.find((s)=>s.name==name)|{});
}
日志(getAge(名称,“tom”))
log(getAge(名称,“tom2”))
这复制了上面的内容。虽然我个人会返回该对象,然后从该年龄开始计算年龄,而不仅仅是返回年龄

这复制了上面的内容。虽然我个人会返回对象,然后根据该对象对年龄进行老化,而不是仅返回年龄。

您可以使用array.prototype.find:

var name=[{name:'joe',age:'nine'},{name:'tom',age:'ten'}];
var someFun=(nm)=>{
var found=names.find(el=>el.name==nm);
返回found&&found.age | | null;
}
console.log(someFun('tom'))您可以使用array.prototype.find:

var name=[{name:'joe',age:'nine'},{name:'tom',age:'ten'}];
var someFun=(nm)=>{
var found=names.find(el=>el.name==nm);
返回found&&found.age | | null;
}
console.log(someFun('tom'))来自

find()方法返回数组中第一个元素的值 满足提供的测试功能

是否有多个同名对象

var名称=[{
名字:'乔',
年龄:9
},
{
名字:“汤姆”,
年龄:10
},
{
姓名:'弗兰克',
年龄:9
},
{
名字:'乔',
年龄:15
}
];
函数getData(arr,搜索){
//按搜索对筛选对象数组
返回arr.filter(o=>o[search[0]]==search[1]);
}
函数列表比(arr,k){
//通过键将对象数组中的值作为逗号分隔的字符串输出
返回arr.map(o=>o[k]).join(“,”);
}
log(getData(name,[“name”,“joe”]);
log(listBy(getData(name,[“name”,“tom”],“age”));
log(listBy(getData(name,[“age”,9]),“name”)来自

find()方法返回数组中第一个元素的值 满足提供的测试功能

是否有多个同名对象

var名称=[{
名字:'乔',
年龄:9
},
{
名字:“汤姆”,
年龄:10
},
{
姓名:'弗兰克',
年龄:9
},
{
名字:'乔',
年龄:15
}
];
函数getData(arr,搜索){
//按搜索对筛选对象数组
返回arr.filter(o=>o[search[0]]==search[1]);
}
函数列表比(arr,k){
//通过键将对象数组中的值作为逗号分隔的字符串输出
返回arr.map(o=>o[k]).join(“,”);
}
log(getData(name,[“name”,“joe”]);
log(listBy(getData(name,[“name”,“tom”],“age”));

log(listBy(getData(name,[“age”,9]),“name”)IE不支持
查找
,请检查。也许你不需要支持IE,但截至2017年10月,它仍然是一个问题。然而,它确实支持


IE不支持
查找
,请检查。也许你不需要支持IE,但截至2017年10月,它仍然是一个问题。然而,它确实支持


names
是一个数组。您将不会使用
对象.键
<代码>返回{joe'nine',tom'ten'}[nm]
将执行以下任务:-)
for(var key in names[i]){console.log(“key:+key+”,value:+names[i][key]);}
name
是一个数组。您将不会使用
对象.键
<代码>返回{joe'nine',tom'ten'}[nm]
将执行以下任务:-)
for(var key in names[i]){console.log(“key:+key+”,value:+names[i][key]);}
当它找不到Tom时会引发异常。@Bergi修复了它当它找不到Tom时会引发异常。@Bergi修复了它当它找不到Tom时会引发异常。好的地方,修正了。谢谢。变量应该命名为
boy
,而不是
foundName
,尽管假设所有的名称都是boy名称,这是可行的。不过,我认为去掉原来的变量名更有意义。如果找不到Tom,就会抛出一个异常。很好,修改了。谢谢。变量应该命名为
boy
,而不是
foundName
,尽管假设所有的名称都是boy名称,这是可行的。不过,我认为去掉原来的变量名更有意义。
var users = [
  { name: "Bill", age: 'nine' },
  { name: 'Tedd', age: 'ten' }
];

function getAgeFromUsers(name) {
  const arr = users.filter(u => u.name === name);
  return !!arr.length ? arr[0].age : "That user ain't here";
}

console.log(getAgeFromUsers('Tedd'));
console.log(getAgeFromUsers("Lion 'O"));