如何根据数组名称获取键值?
2020-04-08
49
我有一个包含英语键的对象和阿拉伯语的值,
,我想检查这些值==阿拉伯语值是否 返回他的键
示例
对象
632339504
数组
448170655
因此,在调用了助手功能之后,我做出了结果,应该是
987100224
以下是我尝试的助手功能
389238427
我致电
692273049
,但它行不通,它返回未定义的
2个回答
您的代码无法正常工作,因为:
let name = arr.map(item => item);
返回一个数组,而
.find(key => object[key] === name);
您尝试将字符串与数组进行比较,但结果始终为 false。
此外,您使用了
.find()
方法,该方法仅返回所提供数组中
第一个
元素的值。您需要使用
.filter()
方法来返回基于
arrabicArray
的所有匹配项。
工作演示:
const englishObject = {
Plumber: 'سباكة',
Electricity: 'الكهرباء',
Dyeing: 'دهانات',
Satellite: 'تلفاز ستالايت',
Cleaning: 'التنظيف',
Air: 'المكيفات',
};
const arrabicArray = ['التنظيف', 'سباكة'];
const _getKeyByValue = (object, arr) => {
return Object.keys(object).filter(key => arr.includes(object[key]));
};
let serv = _getKeyByValue(englishObject, arrabicArray);
console.log(serv);
//['Plumber','Cleaning'] // in english
palaѕн
2020-04-08
您可以减少对象的条目,下面是示例:
const service = {
Plumber: 'سباكة',
Electricity: 'الكهرباء',
Dyeing: 'دهانات',
Satellite: 'تلفاز ستالايت',
Cleaning: 'التنظيف',
Air: 'المكيفات',
};
const arr = ['التنظيف', 'سباكة'];
const result = Object.entries(service).reduce((a, [key, value]) => {
if (arr.includes(value)) {
a.push(key);
}
return a;
}, []);
console.log(result);
为了处理重复项,您可以在找到匹配项后清除
arr
中的值:
const service = {
Plumber: 'سباكة',
Electricity: 'الكهرباء',
Dyeing: 'دهانات',
Satellite: 'تلفاز ستالايت',
Cleaning: 'التنظيف',
Air: 'المكيفات',
Duplicate: 'سباكة',
};
let arr = ['التنظيف', 'سباكة'];
const result = Object.entries(service).reduce((a, [key, value]) => {
if (arr.includes(value)) {
arr = arr.filter(v => v !== value);
a.push(key);
}
return a;
}, []);
console.log(result);
Titus
2020-04-08