为了账号安全,请及时绑定邮箱和手机立即绑定

选择以下划线(_)开头的所有对象键

选择以下划线(_)开头的所有对象键

慕勒3428872 2019-04-18 18:15:38
我需要在下面的对象中创建一个包含所有键(而不是值)的数组,其中键以_下划线开头...在下面的代码片段中,我试图getSubscriptions()返回["_foo1", "_foo2"]let myObj = {  foo0: 'test',  _foo1: 'test',  _foo2: 'test',  foo3: 'test',};function getSubscriptions(obj, cb) {    // should return ["_foo1", "_foo2"]    let ret = ["foo1", "_foo2"];    return cb(ret);}getSubscriptions(myObj, (ret) => {    if (match(ret, ["_foo1", "_foo2"]) ) {         $('.nope').hide();        return $('.works').show();     }    $('.nope').show();    $('.works').hide();});function match(arr1, arr2) {    if(arr1.length !== arr2.length) { return false; }     for(var i = arr1.length; i--;) {         if(arr1[i] !== arr2[i]) { return false;}      }    return true; }body {    background: #333;    color: #4ac388;    padding: 2em;    font-family: monospace;    font-size: 19px;}.nope {  color: #ce4242;}.container div{  padding: 1em;  border: 3px dotted;}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div class="container">    <div class="works">It Works!</div>    <div class="nope">    Doesn't Work...</div></div>
查看完整描述

4 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

您可以使用Object.keysArray.filter


let myObj = {

  foo0: 'test',

  _foo1: 'test',

  _foo2: 'test',

  foo3: 'test',

};


let result = Object.keys(myObj).filter(v => v.startsWith("_"));

console.log(result);


查看完整回答
反对 回复 2019-05-17
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

使用Object.keys带filter,并检查第一个字符是一个下划线_:


let myObj = {

  foo0: 'test',

  _foo1: 'test',

  _foo2: 'test',

  foo3: 'test',

};


const res = Object.keys(myObj).filter(([c]) => c == "_");

console.log(res);


查看完整回答
反对 回复 2019-05-17
?
莫回无

TA贡献1865条经验 获得超7个赞

替换您getSubscriptions()的如下

 function getSubscriptions(obj, cb) {
        let ret = Object.keys(myObj).filter(ele => ele.startsWith('_'))
        return cb(ret)
    }
  • Object.keys(yourObject):返回yourobject的键。

  • Array.filter(function):根据
    truthy条件从数组返回过滤值

  • String.startsWith:如果传递的字符串以('_')开头,则返回true或false


查看完整回答
反对 回复 2019-05-17
  • 4 回答
  • 0 关注
  • 540 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信