gpt4 book ai didi

javascript - 如何检查通过 rest 参数传递的对象是 null 还是 undefined?

转载 作者:行者123 更新时间:2023-11-29 10:57:12 31 4
gpt4 key购买 nike

function extend(...args),如果我运行该函数并在此传递一个空对象

function extend({}),如何检查 this 是否为 null 或 undefined。

输入:const first = { x: 2, y: 3};const second = { a: 70, x: 4, z: 5 };const third = { x: 0, y: 9, q: 10 };const firstSecondThird = extend(first, second, third);

预期输出:{ x: 2, y: 3, a: 70, z: 5, q: 10 }我还必须检查 ...args 中的每个条目,它是一个对象而不是未定义的;如果有任何未定义的,它必须抛出一个错误。我还必须检查是否至少有 2 个参数。

最佳答案

  • 您可以检查 Object.keyslength 来检查 {}。因为 Boolean({})true
  • 使用includes()检查args是否包含nullundefined
  • 使用some()typeof 来检查数组的所有元素是否都是object
  • 您不希望您的属性在出现两次时被覆盖。然后你可以 reverse()

function extend(...args){
if(args.length < 2) throw ("Length is less than 2");
if(!args.some(arg => typeof arg !== "object" || Object.keys(arg).length >=2 )) throw ("Arguments contain something other than object")
if(args.includes(undefined) || args.includes(null)) throw ("Arguments contain null or undefined");
else return Object.assign(...args.reverse())

}
const first = { x: 2, y: 3};
const second = { a: 70, x: 4, z: 5 };
const third = { x: 0, y: 9, q: 10 };
const firstSecondThird = extend(first, second, third);
console.log(firstSecondThird)


console.log(extend({}));
console.log(extend(1,2,3, undefined));
console.log(extend(1,2,3, null));
console.log(extend([]));

以上所有if语句可以合并为一个语句。

关于javascript - 如何检查通过 rest 参数传递的对象是 null 还是 undefined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54780375/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com