我想要一些建议来返回使用lodash删除其他对象的对象的属性。 示例:
deletePropsThatStarsWith({a:1, b:2, aa:3}, 'a') //ouputs {b:2}
到目前为止,这是有效的,但我不知道我需要去哪里。
var obj = { a: 1, b: 2, aa: 3 }
function deletePropsThatStartsWith(object, prop) {
return _.omit(object, prop)
}
console.log(deletePropsThatStartsWith(obj, 'a'))

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
&#13;
感谢您的帮助/建议。
答案 0 :(得分:1)
您正在寻找lodash _.omitBy
方法。您可以为第二个参数传递回调,该参数决定省略哪些属性。将使用两个参数value
和key
调用回调。
因此,对于您的示例,您只需检查密钥,并查看它是否以所需的字符串开头。 .startsWith
方法将是一个不错的选择,或者如果您不能使用它,则lodash本身会提供_.startsWith
方法。
示例:
var obj = {a: 1, b: 2, aa: 3}
function deletePropsThatStartsWith(object, prop) {
return _.omitBy(object, (v, k) => k.startsWith(prop))
}
console.log(deletePropsThatStartsWith(obj, 'a'))
&#13;
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
&#13;
答案 1 :(得分:0)
您不需要lodash
,请尝试自己实施:
function deletePropsThatStartsWith(object, letter) {
var newObjc = {}
Object.keys(object).forEach((key) => {
if (!key.startsWith(letter)) {
newObjc = { ...newObjc, [key]: object[key] }
}
})
return newObjc
}
const objc = { a: 1, b: 2, aa: 3 }
console.log(deletePropsThatStartsWith(objc, 'a'))
输出为{ b: 2 }
答案 2 :(得分:0)
或者,您可以获取对象键,而不是完全使用lodash。这是内置于vanilla js(我最喜欢的JS框架!)
function deletePropsThatStartsWith(oldObject, prop) {
let newObject = {};
Object.keys(oldObject).forEach(k => {
if (k.startsWith(prop)) continue;
newObject[k] = oldObject[k];
});
return newObject;
};
答案 3 :(得分:0)
// without lodash
function deletePropsThatStartsWith(obj, prop) {
var keys = Object.keys(obj);
var newObj = {};
for(var i = 0;i < keys.length;i++){
if(keys[i][0] !== prop){
newObj[keys[i]] = obj[keys[i]]
}
}
return newObj;
}
console.log(deletePropsThatStartsWith({a:1,b:2,aa:3},'a'));
答案 4 :(得分:0)
您可以使用简单的for..in循环执行此操作:
function deletePropsThatStartsWith(object, prop) {
let copy = {};
for (key in object) {
if (!key.startsWith(prop))
copy[key] = object[key]
};
return copy;
}
var obj = { a: 1, b: 2, aa: 3 }
console.log(deletePropsThatStartsWith(obj, "a"));