gpt4 book ai didi

javascript - 如何在 JavaScript 中使用数组和对象输入编写最快的选择函数?

转载 作者:行者123 更新时间:2023-11-30 14:10:54 24 4
gpt4 key购买 nike

编写一个名为“select”的函数。

给定一个数组和一个对象,“select”返回一个新的对象,其属性是给定对象中的那些 AND 其存在于给定的数组中。

注意事项:

  • 如果给定的 array 中存在键,但不在给定的 object 中,则应忽略它们。

  • 它不会修改传入的对象。

(a)可以过滤array,看元素是否匹配obj中的key

(b) 可以创建一个空的对象作为占位符

(c)可以使用push或者其他方式将匹配到key的元素添加到新的object

(d) 可以返回新的对象

var arr = ['a', 'c', 'e'];
var obj = {
a: 1,
b: 2,
c: 3,
d: 4
};

function select(arr, obj) {
var nuObj = {};
for (var i in arr) {
for (var key in obj) {
if (arr[i] === key) {
nuObj[key] = obj[key];

}
}
} return nuObj;
}
var output = select(arr, obj);
console.log(output); // --> { a: 1, c: 3 }

最佳答案

您可以映射对象并检查键是否存在,然后返回一个新对象,否则返回一个空对象以分配给单个对象。

Let's have a look to this line

Object.assign(...arr.map(k => k in obj ? { [k]: obj[k] } : {}))

Object.assign takes objects and returns a single object

Object.assign(                                                )

spread syntax ..., takes an iterable, like an array and use the items as parameters

              ...

For the paramters take arr and map an object for each item of the array

                 arr.map(                                    )

This is the callback for Array#map

                         k => k in obj ? { [k]: obj[k] } : {}  

where a conditional (ternary) operator ?: with a check with in operator to test if a property exist in the object

                              k in obj ?                 :  

if exist, then return a new object with a computed property name and the value of the original object

                                         { [k]: obj[k] }       

or if not, return an empty object, which is neutral in sense of the later Oject.assign

                                                           {}

var arr = ['a', 'c', 'e'],
obj = { a: 1, b: 2, c: 3, d: 4 },
result = Object.assign(...arr.map(k => k in obj ? { [k]: obj[k] } : {}));

console.log(result);

实际版本 2020:获取对象的条目。过滤以仅获取想要的对并从这些对构建新对象。

var array = ['a', 'c', 'e'],
object = { a: 1, b: 2, c: 3, d: 4 },
result = Object.fromEntries(Object
.entries(object)
.filter(([k]) => array.includes(k))
);

console.log(result);

关于javascript - 如何在 JavaScript 中使用数组和对象输入编写最快的选择函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54494681/

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