0

すべてのキーの最後の値を取得して別のオブジェクトに入れようとしているオブジェクトがあります。

var setA = {
    'a':'001, 007, 101',
    'b':'052, 004, 006, 005',
    'c':'003, 002, 001'
}

私がやろうとしているのは、次のような最後のものを入手することです。

var setB = {
    'a':'101',
    'b':'005',
    'c':'001'
}

どうすればこれを達成できますか?

4

5 に答える 5

4

ループ?

var setB = {}
for (var o in setA) {
  var s = setA[o].split(', '),
      x = s[s.length - 1]
  setB[o] = x
}
于 2012-07-13T23:50:48.547 に答える
4

なぜだけではないのですか?

var setB = {
    'a':setA.a.split(',').pop().trim(),
    'b':setA.b.split(',').pop().trim(),
    'c':setA.c.split(',').pop().trim()
}

JSフィドルデモ

事実上、これは変数から返された値setA.a(など)を取得し、その文字列を文字で配列に分割し、,その配列の最後の値をポップオフして、そこから空白を削除します。

文字列を文字の配列として扱うことができることを思い出したとき、jbabeyの回答から次のことが提起されました。

var setA = {
    'a': '001, 007, 101',
    'b': '052, 004, 006, 005',
    'c': '003, 002, 001'
},
    setB = {
    'a': setA.a.slice(-3),
    'b': setA.b.slice(-3),
    'c': setA.c.slice(-3)
}

console.log(setB);​

JSフィドルデモ

参照:

于 2012-07-13T23:51:03.703 に答える
2

そのために正規表現を使用できます

var setB = {
    'a':setA.a.match(/(\d+)$/)[1],
    'b':setA.b.match(/(\d+)$/)[1],
    'c':setA.c.match(/(\d+)$/)[1]
}

/(\d+)$/文字列の最後の桁と一致します

于 2012-07-13T23:48:24.120 に答える
2

文字列の最後の 3 文字が常に必要であることがわかっている場合は、substringを使用できます。

var setA = {
    'a':'001, 007, 101',
    'b':'052, 004, 006, 005',
    'c':'003, 002, 001'
}

var setB = {};

for (var item in setA) {
    setB[item] = setA[item].substring(setA[item].length-3);
}

http://jsfiddle.net/X6J2p/

于 2012-07-13T23:53:25.400 に答える
1

このコードはトリックを行います:

var setB={},temp,prop;
for(prop in setA){
    temp=setA[prop].split(', ');
    temp=temp[temp.length-1];
    setB[prop]=temp;
}
于 2012-07-13T23:56:48.427 に答える