objects
objects
objects
对象提供了对象操作方法,包括基础的对象操作和一些常用的函数。
objects
属性与方法
名称 | 类型 | 参数 | 返回值 | 说明 |
---|---|---|---|---|
keys | 方法 | obj:object | string[] | 返回对象的键数组 |
values | 方法 | obj:object | any[] | 返回对象的值数组 |
entries | 方法 | obj:object | any[] | 返回对象的键值对数组 |
assign | 方法 | target:object,...sources:object[] | object | 合并多个对象到目标对象 |
hasOwnProperty | 方法 | obj:object,prop:string | boolean | 检查对象是否具有某个属性 |
isEmpty | 方法 | obj:object | boolean | 检查对象是否为空 |
deepClone | 方法 | obj:object | object | 深度克隆对象 |
parse | 方法 | sourceObj:object,targetObj:object | object | 将原对象赋值到目标对象 |
keys
返回对象的键数组。
语法
objects.keys(obj:object)
参数
- obj: 对象
返回值
- string[] 对象的属性数组
示例
import {objects} from "core";
let obj = {a: 1, b: 2, c: 3};
// 返回对象的键 ["a", "b", "c"]
let result = objects.keys(obj);
console.log(result); // 输出: ["a", "b", "c"]
values
返回对象的值数组。
语法
objects.values(obj:object)
参数
- obj: 对象
返回值
- any[] 对象的属性值数组
示例
import {objects} from "core";
let obj = {a: 1, b: 2, c: 3};
// 返回对象的值 [1, 2, 3]
let result = objects.values(obj);
console.log(result); // 输出: [1, 2, 3]
entries
返回对象的键值对数组。
语法
objects.entries(obj:object)
参数
- obj: 对象
返回值
- any[] 对象的属性和值的二维数组
示例
import {objects} from "core";
let obj = {a: 1, b: 2, c: 3};
// 返回对象的键值对 [["a", 1], ["b", 2], ["c", 3]]
let result = objects.entries(obj);
console.log(result); // 输出: [["a", 1], ["b", 2], ["c", 3]]
assign
合并多个对象到目标对象。
语法
objects.assign(target:object,...sources:object[])
参数
- target: 目标对象
- sources: 多个源对象
返回值
- object 合并后的新对象
示例
import {objects} from "core";
let target = {a: 1};
let source1 = {b: 2};
let source2 = {c: 3};
// 合并对象,返回 { a: 1, b: 2, c: 3 }
let result = objects.assign(target, source1, source2);
console.log(result); // 输出: { a: 1, b: 2, c: 3 }
hasOwnProperty
检查对象是否具有某个属性。
语法
objects.hasOwnProperty(obj:object,prop:string)
参数
- obj: 目标对象
- prop: 属性名
返回值
- boolean 是否存在属性
示例
import {objects} from "core";
let obj = {a: 1, b: 2, c: 3};
// 对象具有属性 "a"
let result = objects.hasOwnProperty(obj, "a");
console.log(result); // 输出: true
// 对象不具有属性 "d"
result = objects.hasOwnProperty(obj, "d");
console.log(result); // 输出: false
isEmpty
检查对象是否为空。
语法
objects.isEmpty(obj:object)
参数
- obj: 目标对象
返回值
- boolean 是否为空
示例
import {objects} from "core";
// 空对象,返回 true
let result = objects.isEmpty({});
console.log(result); // 输出: true
// 非空对象,返回 false
let obj = {a: 1};
result = objects.isEmpty(obj);
console.log(result); // 输出: false
deepClone
深度克隆对象。
语法
objects.deepClone(obj:object)
参数
- obj: 目标对象
返回值
- object 新的对象
示例
import {objects} from "core";
let original = {a: 1, b: {c: 2}};
// 深度克隆对象,返回 { a: 1, b: { c: 2 } }
let cloned = objects.deepClone(original);
console.log(cloned); // 输出: { a: 1, b: { c: 2 } }
// 修改克隆对象,不影响原对象
cloned.b.c = 3;
console.log(cloned.b.c); // 输出: 3
console.log(original.b.c); // 输出: 2
parse
将原对象赋值到目标对象。
语法
objects.parse(sourceObj:object,targetObj:object)
参数
- sourceObj: 原对象
- targetObj: 目标对象
返回值
- object 转换后的对象
示例
import {objects} from "core"
class User {
id = "123"
name = "test"
gender = "male"
isTeacher = true
constructor(id, name, isTeacher) {
this.id = id
this.name = name
this.isTeacher = isTeacher
}
}
let source = {
id: "xdf",
name: null,
age: 21.1 * 21,
date: [1],
isTeacher: "true"
}
let target = {
id: null,
name: "",
age: 0.0,
date: [],
classes: '尚未分班',
}
console.log(objects.parse(source, target));
// 输出:
// {
// id: 'xdf',
// name: '',
// age: 443.1,
// date: [ 1 ],
// classes: '尚未分班',
// }
let targetClz = new User("id", "testName", false);
console.log(objects.parse(source, targetClz));
// 输出:
// {
// id: 'xdf',
// name: 'testName',
// gender: 'male',
// isTeacher: false,
// }
注意
- 赋值规则:源对象的属性值会覆盖目标对象的同名属性,如果源对象的属性值为空,则转换后为目标对象的同名属性的默认值。
- 源对象的属性值类型必须与目标对象的属性值类型一致,除基本类型
int
、float
、string
会尝试转换以外,其他转换后为目标对象的同名属性的 默认值。