数组操作常用方法

1、js统计数组对象中某个属性等于某值的个数

const array = [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 25 }, { name: 'Charlie', age: 30 }];
 
function countByProperty(arr, prop, value) {
  return arr.filter(item => item[prop] === value).length;
}
 
const count = countByProperty(array, 'age', 25);
console.log(count); // 输出: 2

2、js 如何从一个对象列表中,提取部分属性组成新的数组

// 假设这是你的对象列表
let objectList = [
    { name: 'Alice', age: 30, gender: 'female' },
    { name: 'Bob', age: 25, gender: 'male' },
    { name: 'Charlie', age: 35, gender: 'male' }
];

// 使用 map() 方法提取 name 和 age 属性并组成新的数组
let newArray = objectList.map(obj => {
    return { name: obj.name, age: obj.age };
});

console.log(newArray);

3、根据某个属性进行分类

function groupBy(array, key) {
  return array.reduce((result, currentItem) => {
    // 使用 key 函数(如果提供)或直接获取属性值
    const groupKey = typeof key === 'function' ? key(currentItem) : currentItem[key];
 
    // 确保 result 对象中有对应分类的数组
    if (!result[groupKey]) {
      result[groupKey] = [];
    }
    // 将当前项添加到对应分类的数组中
    result[groupKey].push(currentItem);
 
    return result;
  }, {});
}
 
// 示例数据
const items = [
  { category: 'fruits', name: 'apple' },
  { category: 'animals', name: 'dog' },
  { category: 'fruits', name: 'banana' },
  { category: 'animals', name: 'cat' }
];
 
// 使用 groupBy 函数
const groupedItems = groupBy(items, 'category');
 
console.log(groupedItems);

4、js 数组对象的属性名统一更改

const renameKeys = (arr, keysMap) => {
  return arr.map(obj => {
    return Object.keys(obj).reduce((acc, key) => {
      const newKey = keysMap[key] || key;
      acc[newKey] = obj[key];
      return acc;
    }, {});
  });
};
 
// 示例数据
const array = [
  { oldName1: 'value1', oldName2: 'value2' },
  { oldName1: 'value3', oldName2: 'value4' }
];
 
// 要修改的属性名映射
const keysMap = {
  'oldName1': 'newName1',
  'oldName2': 'newName2'
};
 
// 执行重命名操作
const updatedArray = renameKeys(array, keysMap);
 
console.log(updatedArray);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值