objects

objects

objects 对象提供了对象操作方法,包括基础的对象操作和一些常用的函数。

objects

属性与方法

名称类型参数返回值说明
keys方法obj:objectstring[]返回对象的键数组
values方法obj:objectany[]返回对象的值数组
entries方法obj:objectany[]返回对象的键值对数组
assign方法target:object,...sources:object[]object合并多个对象到目标对象
hasOwnProperty方法obj:object,prop:stringboolean检查对象是否具有某个属性
isEmpty方法obj:objectboolean检查对象是否为空
deepClone方法obj:objectobject深度克隆对象
parse方法sourceObj:object,targetObj:objectobject将原对象赋值到目标对象

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,
// }

注意

  1. 赋值规则:源对象的属性值会覆盖目标对象的同名属性,如果源对象的属性值为空,则转换后为目标对象的同名属性的默认值
  2. 源对象的属性值类型必须与目标对象的属性值类型一致,除基本类型intfloatstring会尝试转换以外,其他转换后为目标对象的同名属性的 默认值
更新时间 9/29/2024, 7:47:47 PM