js数组问题

// 需求:
//      在objArr中查找arr中的元素,如果存在就将  age+name  的字符串添加到newArr中,如果不存在就将  不详+name  的字符串添加到newArr中
// 要求:
//      生成的newArr数组要保留原数组arr的顺序
// 实例如下:

// 数组,数组对象:
let newArr
let arr = ['小红', '小绿', '小兰', '小紫', '小黑', '小明', '小芳', '小小']
let objArr = [
    { 'name': '小红', age: 18 },
    { 'name': '小紫', age: 20 },
    { 'name': '小明', age: 21 },
    { 'name': '小芳', age: 25 },
]


// 期望:
newArr = ['18小红', '不详小绿', '不详小兰', '20小紫', '不详小黑', '21小明', '25小芳', '不详小小']
阅读 2.6k
4 个回答
newArr = arr.map(a => (objArr.find(o => o.name == a) || { age: '不详' }).age + a)
let arr = ['小红', '小绿', '小兰', '小紫', '小黑', '小明', '小芳', '小小']
let objArr = [
    { 'name': '小红', age: 18 },
    { 'name': '小紫', age: 20 },
    { 'name': '小明', age: 21 },
    { 'name': '小芳', age: 25 },
];
let objMap = objArr.reduce((acc,{name,age})=>(acc[name]=age,acc),{});
let newArr = arr.map(item=>(objMap[item] || '不详')+item);

结果

["18小红", "不详小绿", "不详小兰", "20小紫", "不详小黑", "21小明", "25小芳", "不详小小"]
let arr = ["小红", "小绿", "小兰", "小紫", "小黑", "小明", "小芳", "小小"];
let objArr = [
  { name: "小红", age: 18 },
  { name: "小紫", age: 20 },
  { name: "小明", age: 21 },
  { name: "小芳", age: 25 },
];

let map = new Map();
objArr.forEach(e => map.set(e.name, e.age + e.name));
let newArr = arr.reduce((a, c) => (a.push(map.has(c) ? map.get(c) : "未知" + c),a), []);

image.png

const arr = ['小红', '小绿', '小兰', '小紫', '小黑', '小明', '小芳', '小小']
const objArr = [
    { 'name': '小红', age: 18 },
    { 'name': '小紫', age: 20 },
    { 'name': '小明', age: 21 },
    { 'name': '小芳', age: 25 },
]

const objMap = new Map(objArr.map(({ name, age }) => [name, age]));
const result = arr.map(name => `${objMap.get(name) || '不祥'}${name}`);
推荐问题