Javascript操作对象数组实现增删改查

1.介绍

最近帮朋友弄一个简单的针对json数组的增删改成页面,正好涉及到了js去操作对象数组实现增删改查功能。我估计很多朋友应该也会遇到这类操作,所以记录一下以便分享。

2.数据准备

这里我就以学生对象数组为例了,其实这个数组和json数组操作起来基本一致的,转换一下即可。例如可以使用JSON.parse将一串JSON字符串转换为js对象数组。

测试数据:

// 学生对象数组
var students = [
    {id:1, name: "张三", age: 14},
    {id:2, name: "李四", age: 15},
    {id:3, name: "王五", age: 17},
    {id:4, name: "赵六", age: 18}
];

3.查询操作

  • 根据下标查询
console.log(students[1]);
  • 根据id查询
var ss = students.filter((p) => {
    return p.id == 4;
});

console.log(ss);
console.log(ss[0]); // 打印第一个元素
  • 根据姓名模糊查询
ss = students.filter((p) => {
    return p.name.indexOf('五') > -1;
});
console.log(ss);

4.新增操作

var e = {id:5, name: "王八", age: 20};
students.push(e);

5.删除

// 根据ID获取下标

var e = students.filter((p) => {
    return p.id == 4;
});

var index = students.indexOf(e);
// 根据下标删除
students.splice(index,1);
console.log(students.length);  // 剩下4个

6.修改

// 可以直接根据下标修改
students[0].name='张三1';
students[0].age=20;
console.log(students[0]);

7.如何测试?

这里大家可以借助谷歌浏览器F12开发者工具中的console面板(其实就是个js执行引擎),只需要将以上代码按顺序输入执行即可看到效果:
在这里插入图片描述

8.其他数组操作

这里附加一些其他操作命令,需要的朋友也可以参考:

  • push() 在最后面添加元素
  • unshift() 在最前面添加元素
  • pop() 删除最后一个元素
  • shift() 删除第一个元素
  • splice() 删除元素,替换元素,插入元素
  • sort() 数组排序
  • reverse() 数组反转
  • Vue.set()修改数组中的某一个
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Vue3 引入 Pinia(Vue.js 官方推荐的状态管理模式)来进行数据管理,特别是处理数组增删改查操作,你可以按照以下步骤进行: 1. **安装和配置 Pinia**: 首先,确保已经安装了 Vue 和 @vue/runtime-env,然后安装 `pinia`: ```bash npm install --save pinia ``` 2. **创建 store**: 在项目创建一个新的文件(例如:store.js),初始化一个 Pinia store,并定义一个状态(state)用于存储数组对象: ```javascript import { defineStore } from 'pinia'; export const useTodoStore = defineStore('todo', { state: () => ({ todos: [], // 初始的空数组 }), actions: { // 增加 todo addTodo({ commit }, newTodo) { commit('addTodo', newTodo); }, // 删除 todo removeTodo({ commit }, index) { commit('removeTodo', index); }, // 修改 todo updateTodo({ commit }, updatedTodo, index) { commit('updateTodo', { index, updatedTodo }); }, // 清空 todos clearTodos() { commit('clearTodos'); }, // 其他方法,如分页、搜索等可以根据需求添加 }, mutations: { // 更新状态的方法 addTodo(state, newTodo) { state.todos.push(newTodo); }, removeTodo(state, index) { state.todos.splice(index, 1); }, updateTodo(state, { index, updatedTodo }) { state.todos[index] = updatedTodo; }, clearTodos(state) { state.todos.length = 0; // 更简洁地清空数组 } } }); ``` 3. **在组件使用 store**:在需要操作数组的地方导入 store 并调用其提供的方法: ```javascript import { useTodoStore } from './store'; export default { setup() { const todos = useTodoStore().todos; const addTodo = useTodoStore.addTodo; const removeTodo = useTodoStore.removeTodo; const updateTodo = useTodoStore.updateTodo; return { todos, addTodo, removeTodo, updateTodo, }; } }; ``` 当你在组件调用这些方法时(例如通过表单事件或按钮点击),Pinia 就会自动更新对应的 store 状态,从而实现实时的增删改查操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值