如何仅使用列出的键创建对象?

ame*_*y93 2 javascript

创建一个由选取的源属性组成的对象。

参数

  • source - 任何 JavaScript 对象
  • keys - 一组 JavaScript 字符串

返回值

一个新对象,包含键中列出的所有源属性。如果键列在键中,但未在源中定义,则该属性不会添加到新对象中。

例子

pick({ foo: 1, bar: 2, baz: 3 }, ['foo', 'baz']) // -> { foo: 1, baz: 3 }
pick({ qux: 4, corge: 5 }, ['bar', 'grault'])    // -> {}
pick({ bar: 2 }, ['foo', 'bar', 'baz'])          // -> { bar: 2 }
Run Code Online (Sandbox Code Playgroud)

我有

function pick(source, keys) {
  let result = {};
  for (key in source) {
    if (key === keys) {
      result[key];
    }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

迄今为止

Bar*_*mar 5

你没有分配任何东西给result[key],应该是result[key] = source[key]

你不是测试是否keykeys正确的。===做精确比较,你想keys.includes(key)用来测试包含。

function pick(source, keys) {
  let result = {};
  for (key in source) {
    if (keys.includes(key)) {
      result[key] = source[key];
    }
  }
  return result;
}

console.log(pick({ foo: 1, bar: 2, baz: 3 }, ['foo', 'baz'])) // -> { foo: 1, baz: 3 }
console.log(pick({ qux: 4, corge: 5 }, ['bar', 'grault']))    // -> {}
console.log(pick({ bar: 2 }, ['foo', 'bar', 'baz']))          // -> { bar: 2 }
Run Code Online (Sandbox Code Playgroud)