相关疑难解决方法(0)

访问/处理(嵌套)对象,数组或JSON

我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?

例如:

var data = {
    code: 42,
    items: [{
        id: 1,
        name: 'foo'
    }, {
        id: 2,
        name: 'bar'
    }]
};
Run Code Online (Sandbox Code Playgroud)

我怎么能访问name第二项items

javascript arrays nested object data-manipulation

811
推荐指数
24
解决办法
57万
查看次数

我如何编写一个与非贪婪相匹配的正则表达式?

我需要有关非贪婪选项的正则表达式匹配的帮助.

匹配模式是:

<img\s.*>
Run Code Online (Sandbox Code Playgroud)

要匹配的文字是:

<html>
<img src="test">
abc
<img
  src="a" src='a' a=b>
</html>
Run Code Online (Sandbox Code Playgroud)

我在http://regexpal.com上测试

此表达式匹配从<img最后到的所有文本>.我需要它与>初始后遇到的第一个匹配<img,所以在这里我需要得到两个匹配而不是我得到的匹配.

我尝试了所有非贪婪的?组合,没有成功.

regex non-greedy regex-greedy

315
推荐指数
3
解决办法
31万
查看次数

使用占位符和替换对象格式化JavaScript字符串?

我有一个字符串说: My Name is %NAME% and my age is %AGE%.

%XXX%是占位符.我们需要从对象替换值.

对象看起来像: {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}

我需要解析对象并用相应的值替换字符串.所以最终输出将是:

我的名字是迈克,我的年龄是26岁.

整个过程必须使用纯javascript或jquery完成.

javascript string jquery string-formatting

71
推荐指数
8
解决办法
9万
查看次数

推迟执行ES6模板文字

我正在使用新的ES6模板文字功能,我头脑中的第一件事是String.format用于Javascript,所以我开始实现原型:

String.prototype.format = function() {
  var self = this;
  arguments.forEach(function(val,idx) {
    self["p"+idx] = val;
  });
  return this.toString();
};
console.log(`Hello, ${p0}. This is a ${p1}`.format("world", "test"));
Run Code Online (Sandbox Code Playgroud)

ES6Fiddle

但是,模板文字传递给我的原型方法之前会被评估.有没有什么办法可以编写上面的代码来推迟结果,直到我动态创建元素?

javascript ecmascript-6 template-literals

51
推荐指数
2
解决办法
7888
查看次数

如何从常规字符串构造模板字符串?

所以我有这个string:

var name = "Chaim";
var templateStr = "Hello, my name is ${name}";
Run Code Online (Sandbox Code Playgroud)

如何将其转换为模板字符串,以便结果等于:

var template = `Hello, my name is ${name}`;
Run Code Online (Sandbox Code Playgroud)

有没有办法以编程方式构建模板文字?

javascript ecmascript-6 template-strings

21
推荐指数
1
解决办法
7366
查看次数

使用Javascript中的变量格式化字符串模板

我想使用静态定义的模板进行URL构建.

我正在尝试使用ES6字符串插值功能

var template = "http://example.com/?name=${name}&age=${age}";

var name = "John";
var age = "30";

var url = `${template}`;
Run Code Online (Sandbox Code Playgroud)

预期结果:http://example.com/?name = John" = 23

实际结果:http://example.com/? name = $ {name}&age = $ {age}

在这种情况下,不能用绳子插做的是有没有更好的方法比String.prototype.replace

var url = template.replace(/\${name}/,"John").replace(/\${age}/, 23);
Run Code Online (Sandbox Code Playgroud)

javascript string-formatting ecmascript-6

14
推荐指数
5
解决办法
1万
查看次数

ES6文件内容中的字符串插值

我遇到了ES6中的字符串插值功能。如果我在代码中定义了原始字符串,它将起作用。但是我想从文件中读取原始字符串,然后替换占位符。怎么做?

file.txt

   hello ${customer.name} 
Run Code Online (Sandbox Code Playgroud)

节点JS

   var customer = {name: 'sid'};
   var data = fs.readFileSync("file.txt","utf8");
   // what should go here so that data is 'Hello sid'?
Run Code Online (Sandbox Code Playgroud)

javascript node.js ecmascript-6

5
推荐指数
2
解决办法
2819
查看次数

ES6模板文字:如何在解释范围之前传递范围?

我开始使用模板文字来制作错误生成器.

我有工作代码,但我被迫在constructor范围内声明可能的错误列表,我对此并不满意.

有没有办法复制模板文字而不评估它,所以我可以在正确的范围内评估它?或者将范围传递给模板文字?

工作error.js:

'use strict';

class Error {
    constructor(code) {
        const error = {
            //...
            //API
            1001: 'No token',
            1002: `${arguments[1]}`,
            1003: `${arguments[1]} ! ${arguments[2]}`,
            1004: 'Missing data'
            //...
        };
        let i = 0;
        this.code = code;
        this.error = error[code];
        //...
    }
}

// export default Error;
module.exports = Error;
Run Code Online (Sandbox Code Playgroud)

被称为:

'use strict';
const Error = require('./error.js');

console.log(new Error(1002, 'var'));
Run Code Online (Sandbox Code Playgroud)

我想要的是能够const error在模块范围内声明,或者更好的是,在它自己的文件中声明我require.但是现在这样做导致argument不是那个constructor,而是模块之一.

javascript node.js ecmascript-6

4
推荐指数
1
解决办法
2226
查看次数

Is there a way to re-use a template literal in Javascript?

I'm trying to re-use a template literal in javascript.

This isn't working:

let int;
let temp= `Number is: ${int}`;
console.log(temp)
// Number is: undefined
int = 1;
console.log(temp)
// Number is: undefined
int = 2;
console.log(temp)
// Number is: undefined

Run Code Online (Sandbox Code Playgroud)

I thought that changing int variable will dynamicaly change in the template. but i learned otherwise :D

Is it even possible and if so what is the right way of doing it?

Thanks.

javascript template-literals

3
推荐指数
1
解决办法
107
查看次数

根据映射替换字符串中的某些值 - JS

我有一个字符串,其中包含单词,后跟冒号。我需要用对象中的值替换该字符串中的冒号。我能够提取出冒号单词,但不确定在字符串中替换它的最佳方法。

这就是我所拥有的:

const string = 'This is :state :buttonName by :name';

const buttonName = 'button link';

const data = {
  state: 'Alabama',
  name: 'Arun'
}

const res = string.match(/:[a-zA-Z]+/g).map(i => i.replace(':', ''))


console.log(res)

// This is Alabama button link by Arun
Run Code Online (Sandbox Code Playgroud)

最终结果应该是

This is Alabama button link by Arun
Run Code Online (Sandbox Code Playgroud)

请指教。

javascript regex string

2
推荐指数
1
解决办法
1238
查看次数