@tpmjs/tools-rows-sort
Sort an array of objects by one or more fields. Supports multi-level sorting with customizable direction (ascending or descending) for each field. When multiple sort fields are provided, rows are sorted by the first field, then by the second field for ties, and so on.
Test @tpmjs/tools-rows-sort (rowsSortTool) with AI-powered execution
0/2000 characters
Install this tool and use it with the AI SDK
npm install @tpmjs/tools-rows-sortpnpm add @tpmjs/tools-rows-sortyarn add @tpmjs/tools-rows-sortbun add @tpmjs/tools-rows-sortdeno add npm:@tpmjs/tools-rows-sortimport { rowsSortTool } from '@tpmjs/tools-rows-sort';import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { rowsSortTool } from '@tpmjs/tools-rows-sort';
const result = await generateText({
model: openai('gpt-4o'),
tools: { rowsSortTool },
prompt: 'Your prompt here...',
});
console.log(result.text);Available configuration options
rowsarrayArray of objects to sort
sortByarrayArray of sort specifications, applied in order for multi-level sorting
Schema extracted: 1/1/2026, 8:18:05 AM
Sort an array of objects by one or more fields with support for ascending and descending order.
npm install @tpmjs/tools-rows-sort ai
import { rowsSortTool } from '@tpmjs/tools-rows-sort'; import { generateText } from 'ai'; const result = await generateText({ model: yourModel, tools: { rowsSort: rowsSortTool, }, prompt: 'Sort the users by age descending, then by name ascending', });
rows (array, required): Array of objects to sortsortBy (array, required): Array of sort specifications, each containing:
field (string, required): Field name to sort by (supports dot notation)direction (string, required): Sort direction - asc or desc{ rows: Record<string, unknown>[], // Sorted array sortedBy: SortSpec[] // Sort criteria that was applied }
const data = [ { name: 'Charlie', age: 35 }, { name: 'Alice', age: 30 }, { name: 'Bob', age: 25 }, ]; // Returns: [Bob(25), Alice(30), Charlie(35)] await rowsSortTool.execute({ rows: data, sortBy: [{ field: 'age', direction: 'asc' }], });
const products = [ { name: 'Laptop', category: 'electronics', price: 999 }, { name: 'Phone', category: 'electronics', price: 699 }, { name: 'Desk', category: 'furniture', price: 299 }, { name: 'Chair', category: 'furniture', price: 199 }, ]; // Sort by category (asc), then price (desc) within each category // Returns: [Phone(699), Laptop(999), Desk(299), Chair(199)] await rowsSortTool.execute({ rows: products, sortBy: [ { field: 'category', direction: 'asc' }, { field: 'price', direction: 'desc' }, ], });
const orders = [ { id: 1, customer: { name: 'Charlie', tier: 'basic' } }, { id: 2, customer: { name: 'Alice', tier: 'premium' } }, { id: 3, customer: { name: 'Bob', tier: 'premium' } }, ]; // Sort by tier (desc), then customer name (asc) // Returns: [Alice(premium), Bob(premium), Charlie(basic)] await rowsSortTool.execute({ rows: orders, sortBy: [ { field: 'customer.tier', direction: 'desc' }, { field: 'customer.name', direction: 'asc' }, ], });
const files = [ { name: 'file10.txt', size: 1024 }, { name: 'file2.txt', size: 512 }, { name: 'file1.txt', size: 256 }, ]; // Natural sort handles numbers in strings correctly // Returns: [file1.txt, file2.txt, file10.txt] await rowsSortTool.execute({ rows: files, sortBy: [{ field: 'name', direction: 'asc' }], });
The tool intelligently compares values based on their types:
MIT
Downloads/month
44
Quality Score