如何从由"/"组成的键/值字符串创建对象/数组



以以下字符串:

/foo/1/bar/2/cat/bob

我需要将其解析为最终被变成的对象或数组:

foo = 1
bar = 2
cat = bob

var sample = "/foo/1/bar/2/cat/bob".substring(1);
var finalObj = {};
var arr = sample.split('/');
for(var i=0;i<arr.length;i=i+2){  
  finalObj[arr[i]] = arr[i+1];
}
console.log(finalObj);

const str = '/foo/1/bar/2/cat/bob/test/'
const parts = str.split('/')
  .filter(val => val !== '')
const obj = {}
for (let ii = 0; ii < parts.length; ii+=2) {
  const key = parts[ii]
  const value = parts[ii+1]
  obj[key] = !isNaN(value) ? Number(value) : value
}
console.log(obj)

正则表达式是各种解析的选择工具:

str = '/foo/1/bar/2/cat/bob'
obj = {};
str.replace(/(w+)/(w+)/g, (...m) => obj[m[1]] = m[2]);
console.log(obj);

只是为了乐趣,

let str = "/foo/1/bar/2/cat/bob",
    arr = str.split("/"),
    obj = {};
arr.shift();
while (arr.length) obj[arr.shift()] = arr.shift();

最新更新