Javascript 获取对象数组中对象的给定键的值
我想选择给定键的值,我使用了一个丑陋的代码来实现这一点:(我使用了两个for循环来完成一个简单的任务)Javascript 获取对象数组中对象的给定键的值,javascript,Javascript,我想选择给定键的值,我使用了一个丑陋的代码来实现这一点:(我使用了两个for循环来完成一个简单的任务) const短语=[ {0:“我被派去了”,1:“你曾经”}, {2:“看”,3:“看”,4:“看”,5:“看”,6:“看”}, {7:“某人”,8:“某人”,9:“地球”,10:“山姆”}, {11:“保护”}, {12:“我们”,13:“对地球”}, {14:“我们”,15:“你”} ]; const result=getSpanIDText(8);//从上面的数组中获取8 im的值 控制
const短语=[
{0:“我被派去了”,1:“你曾经”},
{2:“看”,3:“看”,4:“看”,5:“看”,6:“看”},
{7:“某人”,8:“某人”,9:“地球”,10:“山姆”},
{11:“保护”},
{12:“我们”,13:“对地球”},
{14:“我们”,15:“你”}
];
const result=getSpanIDText(8);//从上面的数组中获取8 im的值
控制台日志(结果);
函数getSpanIDText(spanID){
for(设i=0;i }
我想你可以这样做,只要你确定每个对象都包含唯一的数字键
let item = phrases.map(obj => Object.entries(obj)).flat().filter(arr => arr[0] == spanId);
return item.length ? item[0][1] : false;
给予
我想你可以这样做,只要你确定每个对象都包含唯一的数字键
let item = phrases.map(obj => Object.entries(obj)).flat().filter(arr => arr[0] == spanId);
return item.length ? item[0][1] : false;
给予
我不知道这是否真的更好,但下面的方法也应该有效
函数getSpanId(短语,spanId){
返回新映射(短语.Map(Object.entries).flat()).get(spanId)
}
我不知道这是否真的更好,但下面的方法也可以
函数getSpanId(短语,spanId){
返回新映射(短语.Map(Object.entries).flat()).get(spanId)
}
这将消除嵌套for循环,更易于阅读
function getSpanIDText(spanID) {
for(let phrase of phrases) {
if(phrase[spanID]) {
return phrase[spanID];
}
}
}
这将消除嵌套for循环,更易于阅读
function getSpanIDText(spanID) {
for(let phrase of phrases) {
if(phrase[spanID]) {
return phrase[spanID];
}
}
}
您可以使用优化的reduce
功能。
当reduce
函数找到匹配的键时,它会对复制的数组进行变异,以跳出reduce
循环
const短语=[
{0:“我被派去了”,1:“你曾经”},
{2:“看”,3:“看”,4:“看”,5:“看”,6:“看”},
{7:“某人”,8:“某人”,9:“地球”,10:“山姆”},
{11:“保护”},
{12:“我们”,13:“对地球”},
{14:“我们”,15:“你”}
];
函数getSpan(短语、键){
返回短语。切片(0)。减少((acc、cv、i、arr)=>{
如果(输入cv){
arr=[];
返回cv[键];
}
返回acc
},未定义)
}
console.log(getSpan(短语,8))/“某人”
log(getSpan(phrases,22))//未定义
您可以使用优化的reduce
函数。
当reduce
函数找到匹配的键时,它会对复制的数组进行变异,以跳出reduce
循环
const短语=[
{0:“我被派去了”,1:“你曾经”},
{2:“看”,3:“看”,4:“看”,5:“看”,6:“看”},
{7:“某人”,8:“某人”,9:“地球”,10:“山姆”},
{11:“保护”},
{12:“我们”,13:“对地球”},
{14:“我们”,15:“你”}
];
函数getSpan(短语、键){
返回短语。切片(0)。减少((acc、cv、i、arr)=>{
如果(输入cv){
arr=[];
返回cv[键];
}
返回acc
},未定义)
}
console.log(getSpan(短语,8))/“某人”
log(getSpan(短语,22))//未定义
const短语=[
{0:“我被派去了”,1:“你曾经”},
{2:“看”,3:“看”,4:“看”,5:“看”,6:“看”},
{7:“某人”,8:“某人”,9:“地球”,10:“山姆”},
{11:“保护”},
{12:“我们”,13:“对地球”},
{14:“我们”,15:“你”}
];
const result=getSpanIDText(8);
函数getSpanIDText(id){
让输出
短语.forEach(x=>{
返回Object.keys(x).forEach(y=>{
如果(+y==id){
输出=x[y];
}
});
});
返回输出;
}
控制台日志(结果)代码>试试这个
const短语=[
{0:“我被派去了”,1:“你曾经”},
{2:“看”,3:“看”,4:“看”,5:“看”,6:“看”},
{7:“某人”,8:“某人”,9:“地球”,10:“山姆”},
{11:“保护”},
{12:“我们”,13:“对地球”},
{14:“我们”,15:“你”}
];
const result=getSpanIDText(8);
函数getSpanIDText(id){
让输出
短语.forEach(x=>{
返回Object.keys(x).forEach(y=>{
如果(+y==id){
输出=x[y];
}
});
});
返回输出;
}
控制台日志(结果)代码>