将动态值与对象

时间:2018-07-02 02:02:34

标签: javascript ecmascript-6

如果是数组,我可以这样做,使myArr [0]获得第一个值,但是如果它是一个对象怎么办?说我的对象是这样的

{a: 'some value', b: 'another thing'}

如何匹配第一个对象?

['a', 'b'].map(o => //match object return true) 我希望得到[true, true],因为['a','b']的数组与对象的键值匹配。

3 个答案:

答案 0 :(得分:4)

使用mapin

const obj = {a: 'some value', b: 'another thing'};
console.log(['a', 'foo', 'b'].map(key => key in obj));

或者如果该属性可能存在于原型链中,并且您不想包括继承的属性,请改用Object.keys

const obj = {
  a: 'some value',
  b: 'another thing'
};
const keys = Object.keys(obj);
console.log(['a', 'foo', 'b'].map(key => keys.includes(key)));

答案 1 :(得分:0)

let obj = {
  a: 'some value',
  b: 'another thing'
};
console.log(['a', 'b'].map(key => obj.hasOwnProperty(key)));

Object.hasOwnProperty效果很好。

答案 2 :(得分:0)

let values = new Object();  // bad practice


let values = {}; // this is Good Practice "JS Object"

let tags= []; // this is Good Practice "JS Array"

根据需要使用const或var。

让我们想象一下标记是一个数组,您可以在其中基于循环来获取动态值。因此它是动态设置的,您将这些值及其出现的位置存储在值对象中-

for(let tag of tags){  // tags here is a dynamic array imagine
        let found = Object.keys(values).find((element) => {
            return element === tag;
        });

// found = true,当它与密钥匹配时             如果(找到){                 values [tag] = values [tag] +1; //这会增加特定对象键的数量。              }其他{                  values [tag] = 1; //对于JS对象中不存在的所有键,仅将值设置为1              }          }