Skip to content
js方法合集

path路径解析方法

js
function parseURL(url) {
    const result = {
        path: [],
        params: [],
    };
    const parts = url.split('?');
    result.path.push(parts[0]);
    if (parts.length > 1) {
        const paramsStr = parts[1];
        const paramsArray = paramsStr.split('&');
        paramsArray.forEach(param => {
            const keyValue = param.split('=');
            result.params.push({
                [keyValue[0]]: keyValue[1],
            });
        });
    }
    return result;
}
console.log(parseURL('https:xxx/cdn/blob/main/Object.js?username=xiaoji&age=20'));

计算百分比均匀分配为100%

js
function calculatePercentages(data) {
    // 计算总和
    const total = data.reduce((acc, val) => acc + val, 0);
    const percentages = [];
    // 计算每个数据项的百分比,并取整
    for (let i = 0; i < data.length; i++) {
        const percentage = Math.round((data[i] / total) * 100);
        percentages.push(percentage + '%'); // 在这里添加百分号
    }
    // 对最后一个数据项进行修正以确保总和为 100%
    const totalPercentage = percentages.reduce((acc, val) => acc + parseInt(val), 0);
    const lastPercentageAdjustment = 100 - totalPercentage;
    percentages[percentages.length - 1] = (parseInt(percentages[percentages.length - 1]) + lastPercentageAdjustment) + '%';
    return percentages;
}
const data = [10, 20, 7, 29, 15];
const percentages = calculatePercentages(data);
console.log(percentages); // 输出每个数据项的百分比,带上百分号 ["12%","25%","9%","36%","18%"],相加刚好100%

根据id找到数组内对应元素

js
function findElementById(array, id) {
    // 使用数组的 find 方法来查找元素
    return array.find(element => element.id === id);

// 使用示例
const elements = [
    { id: 1, name: 'Element 1' },
    { id: 2, name: 'Element 2' },
    { id: 3, name: 'Element 3' }
]
const element = findElementById(elements, 2);
console.log(element); // 输出: { id: 2, name: 'Element 2' 
const nonExistingElement = findElementById(elements, 4);
console.log(nonExistingElement); // 输出: undefined

找到数组内符合条件的元素并修改其属性

js
// 例如找到数组内checked为true的元素,修改对应元素的color改成红色
function updateCheckedElementsColor(array) {
    // 使用 forEach 方法遍历数组
    array.forEach(element => {
        if (element.checked === true) {
            // 如果元素的 checked 属性为 true,则将 color 属性设置为 '红色'
            element.color = '红色';
        }
    });
}
// 使用示例
const elements = [
    { id: 1, name: 'Element 1', checked: false, color: 'blue' },
    { id: 2, name: 'Element 2', checked: true, color: 'green' },
    { id: 3, name: 'Element 3', checked: true, color: 'yellow' }
];
// 更新数组中 checked 为 true 的元素的颜色
updateCheckedElementsColor(elements);
// 打印更新后的数组
console.log(elements);

数组的正序倒序排序

js
// 根据数组的count值进行排序,参数一是数组,参数二控制正序还是倒序
function sortByCount(array, ascending) {
    // 使用数组的 sort 方法进行排序
    array.sort((a, b) => {
        // 如果是正序排序(ascending为true),返回a.count - b.count
        // 如果是倒序排序(ascending为false),返回b.count - a.count
        return ascending ? a.count - b.count : b.count - a.count;
    });
}

// 使用示例
const elements = [
    { id: 1, name: 'Element 1', count: 10 },
    { id: 2, name: 'Element 2', count: 5 },
    { id: 3, name: 'Element 3', count: 20 }
];
// 正序排序
sortByCount(elements, true);
console.log('正序排序:', elements);
// 倒序排序
sortByCount(elements, false);
console.log('倒序排序:', elements);