JS中的对象类型
- Array
- Plain Object (键值对对象)
- Map
- Set
- Function
- Date
- arraylike
1. 获取对象所有键值对的 键 、 值 、 键:值 ^1.0.1
- 使用方法
Object.entries()方法得到键:值,得到的值的类型为字符串。
js
const object2 = {
a: 'somestring',
b: 42
};
for (const [key, value] of Object.entries(object2)) {
console.log(`${key}: ${value}`);
}
// output:
// "a: somestring"
// "b: 42"const object2 = {
a: 'somestring',
b: 42
};
for (const [key, value] of Object.entries(object2)) {
console.log(`${key}: ${value}`);
}
// output:
// "a: somestring"
// "b: 42"- 使用方法
Object.keys()得到一个由键名组成的数组
TIP
Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。 Object.keys( ) 会返回一个数组,数组中是这个对象的key值列表,所以只要Object.keys(a)[0], 就可以得只包含一个键值对的key值。
js
// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// array like object
var obj = { 'first': 'a', 'second': 'b', 'three': 'c' };
console.log(Object.keys(obj)); // console: ['first', 'second', 'three']// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// array like object
var obj = { 'first': 'a', 'second': 'b', 'three': 'c' };
console.log(Object.keys(obj)); // console: ['first', 'second', 'three']TIP
数组也是对象的一种,所以Object.keys(arr)可以对其操作。
- 使用方法
Object.values()得到一个由键值组成的数组
js
var obj1 = { foo: 'bar', baz: 42 };
console.log(Object.values(obj1)); // ['bar', 42]var obj1 = { foo: 'bar', baz: 42 };
console.log(Object.values(obj1)); // ['bar', 42]3. 删除对象中第一个、最后一个、指定的属性
js
算法算法5. 计算包含空对象对象数组的长度 ^1.0.1
在 由对象组成的数组 里,{} 是占数组长度的。
js
const Xarray = [{
key1: 123,
key2: '',
key3: 123,
},
{
key1: null,
key2: 123,
key3: 123,
},
{
//这个对象是空的,但是它占用长度
},
{
key1: 123,
key2: 123,
key3: 123,
},
]
console.log(Xarray.length) //4const Xarray = [{
key1: 123,
key2: '',
key3: 123,
},
{
key1: null,
key2: 123,
key3: 123,
},
{
//这个对象是空的,但是它占用长度
},
{
key1: 123,
key2: 123,
key3: 123,
},
]
console.log(Xarray.length) //4js
const Xarray = [
'',
null,
0,
NaN,
undefined
]
console.log(Xarray.length) //?const Xarray = [
'',
null,
0,
NaN,
undefined
]
console.log(Xarray.length) //?6. 判断并去除对象中的空值
去空值,空值有 '' 、 0 、 NaN 、 null 、 undefined 的表现方式。
以一个键值对对象数组为例子,删除以下各种情况中的空值。
js
[
{
key1:123,
key2:'', //键值对的键值为空字符串,或者其他东西
key3:123,
},
{
key1:null, //键值对的键值为null
key2:123,
key3:123,
},
{
//这个对象是空的
},
{
key1:123, //这个对象看起来正常
key2:123,
key3:123,
},
][
{
key1:123,
key2:'', //键值对的键值为空字符串,或者其他东西
key3:123,
},
{
key1:null, //键值对的键值为null
key2:123,
key3:123,
},
{
//这个对象是空的
},
{
key1:123, //这个对象看起来正常
key2:123,
key3:123,
},
]算法
js
//去掉对象数组中的空值
//也去除数组中空对象
//下面这个是直接不显示。
function distinctArrObj(arr) {
var MyShow = (typeof arr != "object") ? [arr] : arr //确保参数总是数组
for (let i = 0; i < MyShow.length; i++) {
// 去掉对象某个属性的值为null、空的对象
// 去掉整个对象为空的对象
if (MyShow[i].name == null || MyShow[i].name == "" || JSON.stringify(MyShow[i]) == "{}") {
MyShow.splice(i, 1);
i = i - 1;
}
}
return MyShow;
}
var arr3 = [{
name: '一个属性值是空的字符串,一个对象是空的',
age: 18
},
{
name: '', //空字符串
age: 19
},
{
//空对象
},
{
name: null, //空属性值
age: 19
},
]
console.log(arr3)
console.log(arr3.length)
console.log(distinctArrObj(arr3))
console.log('去掉空对象之后的长度:' + distinctArrObj(arr3).length)//去掉对象数组中的空值
//也去除数组中空对象
//下面这个是直接不显示。
function distinctArrObj(arr) {
var MyShow = (typeof arr != "object") ? [arr] : arr //确保参数总是数组
for (let i = 0; i < MyShow.length; i++) {
// 去掉对象某个属性的值为null、空的对象
// 去掉整个对象为空的对象
if (MyShow[i].name == null || MyShow[i].name == "" || JSON.stringify(MyShow[i]) == "{}") {
MyShow.splice(i, 1);
i = i - 1;
}
}
return MyShow;
}
var arr3 = [{
name: '一个属性值是空的字符串,一个对象是空的',
age: 18
},
{
name: '', //空字符串
age: 19
},
{
//空对象
},
{
name: null, //空属性值
age: 19
},
]
console.log(arr3)
console.log(arr3.length)
console.log(distinctArrObj(arr3))
console.log('去掉空对象之后的长度:' + distinctArrObj(arr3).length)7. 根据键值查找对象中的键值对并操作
- 找到键值为
功夫熊猫的键值对,输出它的键名
js
var OriginObject = {
'001': '功夫熊猫',
'key': 100,
'002': '功夫熊猫',
'003': '流浪地球',
'003': '重复',
'004': null,
}
var targetValue = '功夫熊猫'
for (var key in OriginObject) {
if (OriginObject[key] == targetValue) {
console.log(key)
}
}var OriginObject = {
'001': '功夫熊猫',
'key': 100,
'002': '功夫熊猫',
'003': '流浪地球',
'003': '重复',
'004': null,
}
var targetValue = '功夫熊猫'
for (var key in OriginObject) {
if (OriginObject[key] == targetValue) {
console.log(key)
}
}js
var OriginObject = {
'001': '功夫熊猫',
'key': 100,
'002': '功夫熊猫',
'003': '流浪地球',
'003': '重复',
'004': null,
}
var targetValue = '功夫熊猫'
var getObjectKey = (OriginObject, targetValue) => {
return OriginObject.keys(OriginObject).find(targetValue => OriginObject[targetValue]== targetValue);
};
console.log(getObjectKey())var OriginObject = {
'001': '功夫熊猫',
'key': 100,
'002': '功夫熊猫',
'003': '流浪地球',
'003': '重复',
'004': null,
}
var targetValue = '功夫熊猫'
var getObjectKey = (OriginObject, targetValue) => {
return OriginObject.keys(OriginObject).find(targetValue => OriginObject[targetValue]== targetValue);
};
console.log(getObjectKey())- 根据键值查找对象中的键值对,删除该键值对
js
OriginObject.forEach((value,index)=>{
if(value.targetValue==targetValue){
OriginObject.splice(index,1) //这里也可以进行替换键值操作,或者替换整个键值对
}
})OriginObject.forEach((value,index)=>{
if(value.targetValue==targetValue){
OriginObject.splice(index,1) //这里也可以进行替换键值操作,或者替换整个键值对
}
})- 根据键值查找对象中的键值对,将该键值对的键名更换为指定新键名
js
for(var key in OriginObject){
if(OriginObject[key]==targetValue){
// 名操作,注意更换的是键名而不是键值
}
}for(var key in OriginObject){
if(OriginObject[key]==targetValue){
// 名操作,注意更换的是键名而不是键值
}
}- 根据键值查找对象中的键值对,将该键值对的键与值反转
js
for(var key in OriginObject){
if(OriginObject[key]==targetValue){
反转操作
}
}for(var key in OriginObject){
if(OriginObject[key]==targetValue){
反转操作
}
}
liang14658fox