常见问题: 1、String 跟 toString() 2、字符串拼接 3、对象判空 4、js类型判断 5、返回的列表数据进行相同数据整合处理 6、数组list去重 7、求平均数 8、如何复制一个对象
1、String跟toString
let a;
let b = null;
console.log(String(a));
console.log(String(b));
2、字符串拼接
console.log(100 + 10);
console.log(100 + "10");
console.log(true + "10");
3、对象判空
{
function isEmptyObject(value) {
return (
Object.prototype.toString.call(value) === "[object Object]" &&
JSON.stringify(value) === "{}"
);
}
console.log(isEmptyObject([]))
}
{
function isEmpty(obj){
return (
obj && Object.keys(obj).length === 0 && obj.constructor === Object
)
}
console.log('empty---', isEmpty({}))
}
4、类型判断
function toType(obj) {
return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
console.log('类型----',toType(123) == typeof Number(1))
console.log('类型2----',toType('string') == typeof 'str')
5、返回的列表数据进行相同数据整合处理
let oldList = [
{ id: 111, date: "05-25", list: [1, 2, 3] },
{ id: 222, date: "05-26", list: [4, 5] },
{ id: 111, date: "05-25", list: [4, 5] }
];
function formatList() {
return Array.from(
oldList.reduce((dict, item) => {
if (dict.has(item.id)) {
dict.get(item.id).list.push(...item.list);
} else {
dict.set(item.id, {
id: item.id,
date: item.date,
list: [...item.list]
});
}
return dict;
}, new Map())
).map(item => ({
date: item[1].date,
id: item[1].id,
list: item[1].list
}));
}
console.log(formatList());
6、数组list去重
const data = [
{ name: "Kris", age: "24" },
{ name: "Andy", age: "25" },
{ name: "Kitty", age: "25" },
{ name: "Andy", age: "25" },
{ name: "Kitty", age: "25" },
{ name: "Andy", age: "25" },
{ name: "Kitty", age: "25" }
];
let newData = Object.values(
data.reduce((prev, cur) => {
let obj = {};
const { name } = cur;
obj[name] = cur;
console.log('pre...', prev)
console.log('obj...', obj)
return {
...prev,
...obj
};
}, {})
);
console.log(newData)
7、求平均数
const avg = (...nums) => nums.reduce((pre, value) => pre += value, 0) / (nums.length);
console.log(avg(10, 20, 30))
console.log(avg(...[10, 20, 30]))
8、如何复制一个对象
1、一种方法是用json.stringify转化成字符串,再parse回去,但是这样无法复制方法 2、使用扩展语法,但是无法复制对象中的对象,只是引用
|