Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 - Fatal编程技术网

Javascript 获取对象数组中对象的给定键的值

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的值 控制

我想选择给定键的值,我使用了一个丑陋的代码来实现这一点:(我使用了两个for循环来完成一个简单的任务)

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];
}
});
});
返回输出;
}
控制台日志(结果)