JavaScript 写的key-value数组

// JavaScript Key-Value Array

// cheungmine

function _pair_array_t (keyCompFunc) { this._keys = new Array(); this._vals = new Array(); this._comp = function (k1, k2) { return (k1==k2); } this.npos = -1; // DONOT change this if (keyCompFunc != null) this._comp = keyCompFunc; this.insert = function (key, value) { for (var i=0; i<this._keys.length; i++) { if (this._comp(this._keys[i], key)) { this._vals[i] = value; return; } } this._keys.push(key); this._vals.push(value); } this.size = function () { return this._keys.length; } this.find = function (key) { for (var i=0; i<this._keys.length; i++) { if (this._comp(this._keys[i], key)) { return i; } } return this.npos; } this.getKey = function (i) { return this._keys[i]; } this.getVal = function (i) { return this._vals[i]; } this.erase = function (key) { var at = this.find(key); if (at != this.npos) { this._keys.splice(at, 1); this._vals.splice(at, 1); return true; } return false; } this.clear = function () { this._keys.splice(0); this._vals.splice(0); } }

使用:

var map = new _pair_array_t();
map.insert("zhang", "hello");
map.insert("liang", "world");
alert(map.size());
map.erase("zhang");
alert(map.size());
alert(map.find("zhang"));

在`react-jsonschema-form`中处理数组时,特别是涉及到key-value对的填充,通常需要先设置一个JSON schema来定义数据结构。下面是一个基本的示例: 1. 安装依赖 首先安装`react-jsonschema-form`库,如果还没有安装,可以在项目中运行: ```bash npm install @rjsf/core @rjsf/react-native --save ``` 2. 创建Schema 编一个支持数组并指定key-value对的schema。例如,假设我们需要一个数组,每个元素都是一个对象,有`key`和`value`字段: ```json { "type": "array", "items": { "type": "object", "properties": { "key": {"type": "string"}, "value": {"type": "string"} }, "required": ["key", "value"] } } ``` 3. 使用Schema渲染Form 在组件中,结合`useRJSF`钩子来渲染form: ```javascript import React, { useState } from 'react'; import { useForm } from '@rjsf/reactive'; import { renderField } from '@rjsf/core'; function MyForm() { const { control, errors } = useForm({ schema: { ...}, // 填上面创建的schema defaultValues: { items: [{ key: '', value: '' }] }, // 初始化数据 }); // 渲染表单 const fields = Object.keys(control.schema.items.properties).map((key) => ( <div key={key}> {renderField(control, key)} {errors[key] && <p>{errors[key]}</p>} </div> )); return ( <form> {fields} <button onClick={() => control.array.push({ key: '', value: '' })}>Add Item</button> </form> ); } export default MyForm; ``` 这里,我们创建了一个初始数组,点击"Add Item"按钮会动态添加新的key-value对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值