- 1027
const carData = [
{ name: "card_id", value: "2464", empty: false },
{ name: "obu_id", value: "395", empty: false },
{ name: "plate_no", value: "藏O4416", empty: false },
];
const ceshiData = { card_id: "2464", obu_id: "395", plate_no: "藏O4416" };
// 把 carData 改成 ceshiData
function Demo(data) {
let list = {}
data.map(item => {
list[item.name] = item.value
})
return list
}
let list = Demo(carData)
console.log(list); // {card_id: "2464", obu_id: "395", plate_no: "藏O4416"}
// 核心代码 obj[item.name] = item.value
Object.assign()
Object.assign()可以用来处理数组,但是会把数组视为对象。
Object.assign([1, 2, 3], [4, 5, 6]
// [4, 5, 6]
- 上面的代码中
Object.assign把数组视为属性名为 0、1、2 的对象,因此源数组的 0 下标属性 4 覆盖了目标数组的 0 好属性 1
Object.keys(['我', '是', '谁']) // ["0", "1", "2"]
Object.keys({ name: '小王', age: 21 }) // ["name", "age"]
Object.keys是以数组的形式输出属性名
[1, 2, 3].map((item, index) => parseInt(item, index))
// [1, NaN, NaN]
// parseInt(数值, 进制)
6、下面代码输出的结果是什么?
var a = {n: 1};
var b = a;
a.x = a = {n: 2};
console.log(a.x)
console.log(b.x)
参考答案
undefined
{n:2}
首先,a和b同时引用了{n:2}对象,接着执行到a.x = a = {n:2}语句,尽管赋值是从右到左的没错,但是.的优先级比=要高,所以这里首先执行a.x,相当于为a(或者b)所指向的{n:1}对象新增了一个属性x,即此时对象将变为{n:1;x:undefined}。之后按正常情况,从右到左进行赋值,此时执行a ={n:2}的时候,a的引用改变,指向了新对象{n:2},而b依然指向的是旧对象。之后执行a.x = {n:2}的时候,并不会重新解析一遍a,而是沿用最初解析a.x时候的a,也即旧对象,故此时旧对象的x的值为{n:2},旧对象为 {n:1;x:{n:2}},它被b引用着。
后面输出a.x的时候,又要解析a了,此时的a是指向新对象的a,而这个新对象是没有x属性的,故访问时输出undefined;而访问b.x的时候,将输出旧对象的x的值,即{n:2}。
// 1106
let foo = '11' + 2 - '1'
console.log(foo);// 111
console.log(typeof foo); // number
typeof 返回的数据类型有哪些
console.log(typeof 1); // number
console.log(typeof true); // boolean
console.log(typeof 'abc'); // string
console.log(typeof Symbol(1)); // symbol
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof Array); // function
console.log(typeof String); // function
// split 和 join 的区别
// split 是分割字符,返回一个数组
let a = 'hell,oworld'
let b = ['hello', 'world']
console.log(a.split('')); // ["hell", "oworld"]
console.log(a.split(',')); // ["h", "e", "l", "l", ",", "o", "w", "o", "r", "l", "d"]
console.log(b.join('')); // helloworld
console.log(b.join('+')); // hello+world
// 倒叙数组
let a = '1234567'
console.log(a.split('').reverse().join(''));