gpt4 book ai didi

Javascript/Underscore,将 bool 数组转换为字符串数组

转载 作者:行者123 更新时间:2023-11-30 08:00:27 26 4
gpt4 key购买 nike

因此,我试图完成将 bool 值数组转换为字符串数组(仅限设置为 true 的 bool 值)。这可以是 javascript 或下划线。让我告诉你我的意思。

我有一个这样的数组:

 [{"item1" : [{"one": true, "two": false}]}, {"item2" : [{"one": false, "two": true}]}];

我要寻找的最终结果是:

[{"item1" : ["one"]}, {"item2" : ["two"]}];

值得一提的是,所有这些键都是动态的。我似乎无法弄清楚我应该如何遍历这个数组来完成这个任务。越简单越好!谢谢!

这是我糟糕的尝试:

  $scope.testObject = _.map($scope.filterArray, function(obj) {

_.map(obj.values, function(value) {

if (value === true) {
return value;
}
});

});

(这不起作用)。我想要完成的是将这些对象的值(例如 [{"one":true, "two": false}])转换为字符串数组,字符串是设置为的项目的键是的。

例如

 [{"one":true, "two": false}]

会变成

  ["one"]

因为二是假的。

最佳答案

lodash :

1) 选择值为真值的对象的属性:

_.pick(object, Boolean)

2) 抓取值为真对象的属性的键:(结合上面的解决方案)

_.keys(_.pick(object, Boolean))

3) 用_.mapValues对每个item做上述操作(这就像在对象上执行 Array.prototype.map)

_.mapValues(item, function (value) {
return _.keys(_.pick(value[0], Boolean));
});

var arr = [{"item1" : [{"one":true, "two": false}]}, {"item2" : [{"one":false, "two": true}]}];

function run () {
return _.map(arr, function (item) {
return _.mapValues(item, function (value) {
return _.keys(_.pick(value[0], Boolean));
});
})
}

document.write('<pre>' + JSON.stringify(run(), null, 2) + '</pre>')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.6.0/lodash.min.js"></script>

更新:使用underscore :

幸运的是,大多数方法都由下划线支持,我唯一要做的就是将 _.mapValues 更改为 _.mapObject ( source )

var arr = [{"item1" : [{"one":true, "two": false}]}, {"item2" : [{"one":false, "two": true}]}];

function run () {
return _.map(arr, function (item) {
return _.mapObject(item, function (value) {
return _.keys(_.pick(value[0], Boolean));
});
})
}

document.write('<pre>' + JSON.stringify(run(), null, 2) + '</pre>')
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

关于Javascript/Underscore,将 bool 数组转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573598/

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