我有一个像["1 apple", "2 watermelon"]
这样的数组,我想将其转换为像{apple: 1, watermelon: 2}
这样的对象
这是我的代码,但我认为我做错了:
const object = {}
arr.forEach(a => {
let key = a.match(/\d+/g)
let value = a.match(/\D+/g)
Object.assign(object, {
key: value
})
})
答案 0 :(得分:2)
使用kubectl api-resources --verbs=list --namespaced -o name | `
%{ kubectl get $_ --show-kind --ignore-not-found -l <label>=<value> -n
<namespace> }
和Array.map()
Object.fromEntries()
答案 1 :(得分:0)
const arr = ["1 apple", "2 watermelon"];
const object = {}
arr.forEach(a => {
let key = a.match(/\d+/g)
let value = a.match(/\D+/g)
Object.assign(object, {
[value[0]]: key[0]
})
})
console.log(object)
值是一个数组,您需要为内部元素指定一个索引,在这种情况下,键也是变量,并且在从变量定义对象键时必须使用[]语法。
但这不是完成这项工作的最佳解决方案。
答案 2 :(得分:0)
当对正则表达式使用g
标志时,它将返回一个匹配数组,因此您可以使用[0]
获得第一个匹配项。要分配一个键,您不需要Object.assign
:
const arr = ["1 apple", "2 watermelon"];
const object = {};
arr.forEach(a => {
let value = a.match(/\d+/g)[0];
let key = a.match(/\D+/g)[0];
object[key] = value;
});
这仍然存在字符串中有前导空格的问题,因此您可以说value = a.match(/\D+/g)[0].substr(1);
,或者如果可以保证单词之间用空格隔开,则可以在空格上进行分割:>
const arr = ["1 apple", "2 watermelon"];
const object = {};
arr.forEach(a => {
const [value, ...keys] = a.split(" ");
object[keys.join(" ")] = value;
});
答案 3 :(得分:0)
const arr=["1 apple", "2 watermelon"];
const object = {}
arr.forEach(item => {
const [val,key]=item.split(' ');
object[key]=Number(val,10);
});
console.log(object);
使用split函数在空白处分割字符串。使用数组解构来捕获组成部分(即在第一次迭代item.split(' ')
中将返回['1','apple']
,然后为val分配'1'
和键'watermelon'
)。使用Number函数将字符串转换为整数(可选参数为base,此处为10)。