2017-08-03 43 views
0
specifc字符串作为子

我有喜欢的数组:选号键包含在Javascript

var arr = ["hello","world"] 
// This array can contain any number of strings 

对象是这样的:

var obj_arr = { 
     "abc-hello-1": 20, 
     "def-world-2": 30, 
     "lmn-lo-3": 4 
    } 

我想有这只有那些包含对象键,它包含上面的数组值作为子字符串。 对于如:

结果会是这样的:

var result = { 
     "abc-hello-1": 20, 
     "def-world-2": 30, 
    } 

我想要做这样的事情(使用lodash):

var to_be_ensembled = _.pickBy(timestampObj, function(value, key) { 
       return _.includes(key, "hello"); 
// here instead of "hello" array should be there 
      }); 

回答

2

您可以使用_.some()迭代字符串数组,并检查密钥是否包含任何字符串。

var arr = ["hello", "world"] 
 

 
var timestampObj = { 
 
    "abc-hello-1": 20, 
 
    "def-world-2": 30, 
 
    "lmn-lo-3": 4 
 
} 
 

 
var to_be_ensembled = _.pickBy(timestampObj, function(value, key) { 
 
    return _.some(arr, function(str) { // iterate the arr 
 
    return _.includes(key, str); // if one of the strings is included in the key return true 
 
    }); 
 
}); 
 

 
console.log(to_be_ensembled);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

3

仅使用JavaScript你可以使用数组forEach &达致这Object.Keys功能

var arr = ["hello", "world"] 
 

 

 
var obj_arr = { 
 
    "abc-hello-1": 20, 
 
    "def-world-2": 30, 
 
    "lmn-lo-3": 4 
 
} 
 

 
var resultObj = {}; 
 
// get all the keys from the object 
 
var getAllKeys = Object.keys(obj_arr); 
 
arr.forEach(function(item) { 
 
    // looping through first object 
 
    getAllKeys.forEach(function(keyName) { 
 
    // using index of to check if the object key name have a matched string 
 
    if (keyName.indexOf(item) !== -1) { 
 
     resultObj[keyName] = obj_arr[keyName]; 
 
    } 
 
    }) 
 
}) 
 
console.log(resultObj)

+0

感谢。任何奇特的方式使用lodash? – Ashag

2

试试这个代码

var result = _.map(arr, function(s){ 
    return _.pickBy(timestampObj, function(v, k){ 
    return new RegExp(s,"gi").test(k) 
    }) 
})