Выбор массива, чтобы стать свойствами объекта

1

Мне был задан массив и объект, и я создаю функцию, которая возвращает новый объект, чьими свойствами являются объекты в заданном объекте AND, чьи ключи присутствуют в данном массиве. Если ключи присутствуют в данном массиве, но не находятся в данном объекте, они должны игнорировать их. Он не изменяет переданный объект.

До сих пор я получил это:

function select(arr, obj) {
  var myObj = {};

  for(var i = 0; i <= arr.length; i++){
    arr[i] = obj[];
  }

}

var arr = ['a', 'c', 'e'];
var obj = {
  a: 1,
  b: 2,
  c: 3,
  d: 4
};
var output = select(arr, obj);
console.log(output); // --> IT MUST RETURN { a: 1, c: 3 }

Любая идея, что я делаю неправильно?

Теги:
object
arrays

2 ответа

2

У вас было это, почти,

  • если вы добавите чек, если ключ находится в объекте ( in операторе), а затем
  • вам нужно назначить новое свойство возвращаемого объекта и, по крайней мере,
  • вам нужно вернуть этот объект.

function select(arr, obj) {
    var myObj = {};
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] in obj) {
            myObj[arr[i]] = obj[arr[i]];
        }
    }
    return myObj;
}

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

console.log(output); // { a: 1, c: 3 }
0

Здесь ES6 один вкладыш;)

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

var r = Object.keys(obj).reduce((o, v) => {return (arr.some(a => {return a===v;}) && (o[v] = obj[v]), o)}, {});

console.log(r);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню